Entwickler-Ecke

Windows API - SHAppBarMessage


Desert Storm - Do 03.08.06 15:12
Titel: SHAppBarMessage
Ich bin gerade dabei mir eine AppBar zu erstellen. Habe auch schon etwas Code gefunden aber ich hab das Problem, dass die AppBar immer so breit ist wie der Bildschirm. Kann man das nich irgendwie ändern?
Ich benutze den Code:



Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
procedure TForm1.FormCreate(Sender: TObject);
var
  iResult: integer;
begin
// Größe der ganzen Struktur
//fAppBarData.cbSize := SizeOf(TAppBarData);
// Handle des Formulares, das als AppBar dienen soll
fAppBarData.hWnd := Self.Handle;
// Callback-Message
fAppBarData.uCallbackMessage := WM_APPBARMSG;
// Wo soll die AppBar sein?
fAppBarData.uEdge := ABE_TOP;
fAppBarData.rc.Left := 876;
fAppBarData.rc.Right := 0;
fAppBarData.rc.Top := 0;
fAppBarData.rc.Bottom := 715;

// AppBar erstellen 
iResult := SHAppBarMessage(ABM_NEW, fAppBarData);

// Hat das Erzeugen geklappt?
if iResult = 0 then
begin
ShowMessage('Die AppBar konnte nicht erzeugt werden. Unter Umständen existiert bereits eine AppBar an dieser Position.');
Exit;
end;

// Formular genauso breit machen, wie man will
self.Width := 155;

// Position abfragen und nochmal setzen
SHAppBarMessage(ABM_QUERYPOS, fAppBarData);
SHAppBarMessage(ABM_SETPOS, fAppBarData);
// Nachrichtenschleife abarbeiten
Application.ProcessMessages;
// Bringt das Fenster an die gewünschte Position. Dazu werden die vorher festgelegten Werte verwendet.
MoveWindow(fAppBarData.hWnd, fAppBarData.rc.Left, fAppBarData.Rc.Top,
GetSystemMetrics(SM_CXSCREEN), fAppBarData.rc.Bottom, true);
end;



Moderiert von user profile iconTino: Topic aus Delphi Language (Object-Pascal) / CLX verschoben am Do 03.08.2006 um 17:26


Desert Storm - Do 03.08.06 16:44

OK hat sich erleigt. Hab den Fehler gefunden


alias5000 - Do 03.08.06 16:57

Der wäre? Damit die nachfolgenden Leute, die die Suche benutzen auch die Lösung kennen

Gruß alias5000