Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi SHAppBarMessage Problem (https://www.delphipraxis.net/11387-shappbarmessage-problem.html)

Zeitkritiker 5. Nov 2003 15:14


SHAppBarMessage Problem
 
Hab schon wieder ein Problem, dass im Forum angesprochen wurde und ich wieder nicht durchblicke. Und zwar habe ich folgenden code genommen:
Code:
procedure TForm1.FormActivate(Sender: TObject);
begin
DAta.cbSize := SizeOf(TAppBarData);;
Data.hWnd := Form1.Handle;
Data.uEdge := ABE_TOP;

Data.rc.Left := 0;
Data.rc.Top := 0;
Data.rc.Right := 0;
Data.rc.Bottom := 60;

result := SHAppBarMessage(ABM_NEW, Data);

if Result = 0 then
begin
  ShowMessage('AppBar konnte nicht registriert werden');
  exit;
end;
SHAppBarMessage(ABM_QUERYPOS, Data);
SHAppBarMessage(ABM_SETPOS, Data);
end;
nun möchte ich aber form1 in den freigegebenen platz auf den desktop haben. wie kann ich das machen. hab irgendwie gelesen mit MoveWindow() ? oder wie geht das?

Zeitkritiker 5. Nov 2003 17:17

Re: SHAppBarMessage Problem
 
hat niemand eine antwort auf meine frage :(

Alexander 5. Nov 2003 18:24

Re: SHAppBarMessage Problem
 
Jupp MoveWindow.
Z.B. so:
Delphi-Quellcode:
 MoveWindow(Data.hWnd, Data.rc.Left, Data.Rc.Top, GetSystemMetrics(SM_CXSCREEN), Data.rc.Bottom, true);

Zeitkritiker 5. Nov 2003 18:35

Re: SHAppBarMessage Problem
 
es funktioniert einfach nicht. das fenster versucht zwar in den bereich zu 'springen' kehrt aber immer wieder zum alten platz zurück. was mache ich falsch? hier mal der komplette code:
Code:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ShellAPI;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;
  result: integer;
  Data: TAppBarData;


implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
DAta.cbSize := SizeOf(TAppBarData);;
Data.hWnd := Form1.Handle;
Data.uEdge := ABE_TOP;

Data.rc.Left := 0;
Data.rc.Top := 0;
Data.rc.Right := 0;
Data.rc.Bottom := 60;

result := SHAppBarMessage(ABM_NEW, Data);

if Result = 0 then
begin
  ShowMessage('AppBar konnte nicht registriert werden');
  exit;
end;

SHAppBarMessage(ABM_QUERYPOS, Data);
SHAppBarMessage(ABM_SETPOS, Data);
MoveWindow(Data.hWnd, Data.rc.Left, Data.Rc.Top, GetSystemMetrics(SM_CXSCREEN), Data.rc.Bottom, true);
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
SHAppBarMessage(ABM_REMOVE, Data);
end;

end.

Alexander 5. Nov 2003 18:49

Re: SHAppBarMessage Problem
 
BEvor du deine Form verschiebst, ruf mal Application.ProcessMessages auf.

Zeitkritiker 5. Nov 2003 19:11

Re: SHAppBarMessage Problem
 
danke, jetzt geht es.


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:36 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz