![]() |
Problem mit SHAppBarMessage
Hi,
mit folgendem Source erstelle ich mir eine AppBar:
Delphi-Quellcode:
Mit
procedure TForm1.FormShow(Sender: TObject);
var aBuf: _AppBarData; begin MSG_CBACK := RegisterWindowMessage('MSG_CBACK'); aBuf.cbSize := sizeOf(_AppBarData); aBuf.hWnd := self.Handle; aBuf.uCallbackMessage := MSG_CBACK; aBuf.uEdge := ABE_TOP; SHAppBarMessage(ABM_NEW, aBuf); end;
Delphi-Quellcode:
fange ich folgenden Fehler ab:
ShowMessage( SysErrorMessage(GetLastError) );
Zitat:
Chris |
Re: Problem mit SHAppBarMessage
Moin Chris,
prüf' doch erst mal, ob SHAppbarMessage überhaupt einen Fehler verursacht hat (liefert dann false zurück). Wenn nicht sagt GetLastError nichts brauchbares aus. |
Re: Problem mit SHAppBarMessage
Würde ich ja gerne, aber es ist kein Boolean, sondern ein Cardinal. Im PSDK steht:
Zitat:
Chris |
Re: Problem mit SHAppBarMessage
Moin Chris,
Typecast
Delphi-Quellcode:
:mrgreen:
if not Boolean(SHAppbarMessage(...)) then
;-) |
Re: Problem mit SHAppBarMessage
*nein* ;)
Naja. Also, lt. dieser Abfrage liegt es nicht an SHAppBarMessage... :| Allerdings tut sich wie gesagt nichts. Das Formular "liegt" ganz normal da rum. Ich geh jetzt mal davon aus, dass ich nichts machen muss (also z.B. Align = alTop oder so). Chris |
Re: Problem mit SHAppBarMessage
Ganz so einfach ist es nicht.. ;)
du musst noch die Position mit ABM_SETPOS festlegen! Hier die Procedure die ich bei meinem X-Spy verwende:
Delphi-Quellcode:
procedure FillAppBarData(var aData: TAppBarData);
begin with aData do begin cbSize := SizeOf(TAppBarData); hWnd := MainForm.Handle; uCallbackMessage := WM_APPBAR; uEdge := ABE_TOP; end; end; procedure AddAppBar; var aData: TAppBarData; begin FillAppBarData(aData); SHAppBarMessage(ABM_NEW, aData); SystemParametersInfo(SPI_GETWORKAREA, 0, @aData.rc, 0); aData.rc.Bottom := aData.rc.Top + MainForm.Height; SHAppBarMessage(ABM_QUERYPOS, aData); SHAppBarMessage(ABM_SETPOS, aData); MainForm.aAppBarRect := aData.rc; MainForm.MoveToAppBarRect; end; |
Re: Problem mit SHAppBarMessage
Moin Zusammen,
ausserdem sollte man am Schluss ABM_REMOVE nicht vergessen, damit der Bereich wieder freigegeben wird. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:37 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz