Einzelnen Beitrag anzeigen

Benutzerbild von Helmi
Helmi

Registriert seit: 29. Dez 2003
Ort: Erding, Republik Bayern
3.336 Beiträge
 
Delphi XE2 Professional
 
#1

NotifyIconData: Problem beim Erweitern vom Record

  Alt 15. Sep 2011, 10:55
Hallo,

ich nutze diesen Code zum Erstellen eines TrayIcons mit einem BalloonTip.
Dies funktioniert soweit auch ganz gut.

Bei MSDN gibt es für Vista und höher eine neue Variable hBalloonIcon.

Dazu wollte ich folgendes Record um hBalloonIcon erweitern:

Delphi-Quellcode:
  TNewNotifyIconData = record
    cbSize: DWORD;
    Wnd: HWND;
    uID: UINT;
    uFlags: UINT;
    uCallbackMessage: UINT;
    hIcon: HICON;
   //Version 5.0 is 128 chars, old ver is 64 chars
    szTip: array [0..127] of Char;
    dwState: DWORD; //Version 5.0
    dwStateMask: DWORD; //Version 5.0
    szInfo: array [0..255] of Char; //Version 5.0
    DUMMYUNIONNAME: TDUMMYUNIONNAME;
    szInfoTitle: array [0..63] of Char; //Version 5.0
    dwInfoFlags: DWORD; //Version 5.0
    hBalloonIcon : HICON;
  end;
Aber sobald ich die Zeile hBalloonIcon : HICON; hinzufüge, wird der BalloonTip nicht mehr dargestellt (Das Icon schon).
Blende ich diese Zeile aus, so funktioniert wieder alles wie gewünscht.

Auch wenn ich das Record anders aufbaue (sortiere) so hab ich das gleiche Phänomen.

Mein Verdacht ist, dass sich irgendwas im Speicher verschiebt. Deswegen hab ich es auch schon mit packed record versucht. Aber das ergibt das gleiche Ergebnis.

Das Einzige was ich mir wegen hBalloonIcon vorstellen könnte ist, dass man entweder hIcon oder hBalloonIcon haben darf. Das könnte man mit einem Compilerschalter abdecken.

[Edit]
Was ich jetzt gesehen habe auf der MSDN-Seite ist, dass das Record fest vorgegeben ist.

Delphi-Quellcode:
  TNewNotifyIconData = record
    cbSize : DWORD;
    Wnd : HWND;
    uID : UINT;
    uFlags : UINT;
    uCallbackMessage: UINT;
    hIcon : HICON;
    szTip : array [0..127] of Char;
    dwState : DWORD; //Version 5.0
    dwStateMask : DWORD; //Version 5.0
    szInfo : array [0..255] of Char; //Version 5.0
    DUMMYUNIONNAME : TDUMMYUNIONNAME;
    szInfoTitle : array [0..63] of Char; //Version 5.0
    dwInfoFlags : DWORD; //Version 5.0
    guidItem : GUID;
    hBalloonIcon : HICON;
  end;
Das heisst: Vor hBalloonIcon muss guidItem definiert werden. Bei MSDN steht: GUID guidItem; - Nur was ist GUID für ein Typ?
mfg
Helmi

>> Theorie ist Wissen, dass nicht funktioniert - Praxis ist, wenn alles funktioniert und keiner weiss warum! <<
  Mit Zitat antworten Zitat