AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Problem mit SHAppBarMessage

Ein Thema von CalganX · begonnen am 17. Jul 2003 · letzter Beitrag vom 17. Jul 2003
Antwort Antwort
CalganX

Registriert seit: 21. Jul 2002
Ort: Bonn
5.403 Beiträge
 
Turbo Delphi für Win32
 
#1

Problem mit SHAppBarMessage

  Alt 17. Jul 2003, 15:57
Hi,
mit folgendem Source erstelle ich mir eine AppBar:
Delphi-Quellcode:
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;
Mit
ShowMessage( SysErrorMessage(GetLastError) ); fange ich folgenden Fehler ab:

Zitat:
---------------------------
Project1
---------------------------
Klasse ist nicht vorhanden
---------------------------
OK
---------------------------
Hat da jemand eine Idee?

Chris
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.105 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Problem mit SHAppBarMessage

  Alt 17. Jul 2003, 16:21
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.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
CalganX

Registriert seit: 21. Jul 2002
Ort: Bonn
5.403 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: Problem mit SHAppBarMessage

  Alt 17. Jul 2003, 16:28
Würde ich ja gerne, aber es ist kein Boolean, sondern ein Cardinal. Im PSDK steht:
Zitat von Das PSDK:
Return Value
Returns a message-dependent value. For more information, see the Microsoft Platform Software Development Kit (SDK) documentation for the appbar message sent.


Chris
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.105 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: Problem mit SHAppBarMessage

  Alt 17. Jul 2003, 16:36
Moin Chris,

Typecast

if not Boolean(SHAppbarMessage(...)) then
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
CalganX

Registriert seit: 21. Jul 2002
Ort: Bonn
5.403 Beiträge
 
Turbo Delphi für Win32
 
#5

Re: Problem mit SHAppBarMessage

  Alt 17. Jul 2003, 16:40
*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
  Mit Zitat antworten Zitat
Benutzerbild von Motzi
Motzi

Registriert seit: 6. Aug 2002
Ort: Wien
598 Beiträge
 
Delphi XE2 Professional
 
#6

Re: Problem mit SHAppBarMessage

  Alt 17. Jul 2003, 16:52
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;
Manuel Pöter
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.105 Beiträge
 
Delphi 11 Alexandria
 
#7

Re: Problem mit SHAppBarMessage

  Alt 17. Jul 2003, 17:14
Moin Zusammen,

ausserdem sollte man am Schluss ABM_REMOVE nicht vergessen, damit der Bereich wieder freigegeben wird.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:02 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