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 NotifyIconData: Problem beim Erweitern vom Record (https://www.delphipraxis.net/163087-notifyicondata-problem-beim-erweitern-vom-record.html)

Helmi 15. Sep 2011 09:55

NotifyIconData: Problem beim Erweitern vom Record
 
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
Delphi-Quellcode:
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:
Delphi-Quellcode:
GUID guidItem;
- Nur was ist GUID für ein Typ?

DeddyH 15. Sep 2011 10:05

AW: NotifyIconData: Problem beim Erweitern vom Record
 
http://docwiki.embarcadero.com/VCL/de/System.TGUID

Helmi 15. Sep 2011 10:07

AW: NotifyIconData: Problem beim Erweitern vom Record
 
Zitat:

Zitat von DeddyH (Beitrag 1124482)

Danke für den Link!
Ich habs aber befürchtet. Mein nostalgisches Delphi 7 erlaubt keine class-Aufrufe im Record. Deswegen kann ich es leider nicht nutzen

DeddyH 15. Sep 2011 10:12

AW: NotifyIconData: Problem beim Erweitern vom Record
 
Gab es denn unter Delphi 7 noch keinen entsprechenden Datentyp? Falls nicht, lass die Methoden doch weg, das müsste auch passen, wenn ich mich nicht irre.

Helmi 15. Sep 2011 10:15

AW: NotifyIconData: Problem beim Erweitern vom Record
 
Zitat:

Zitat von DeddyH (Beitrag 1124484)
Gab es denn unter Delphi 7 noch keinen entsprechenden Datentyp? Falls nicht, lass die Methoden doch weg, das müsste auch passen, wenn ich mich nicht irre.

Du irrst dich nicht :-)
Ohne den Methoden funktioniert es - und auch der BalloonTip wird richtig dargstellt!
Danke für die Hilfe

DeddyH 15. Sep 2011 10:22

AW: NotifyIconData: Problem beim Erweitern vom Record
 
Keine Ursache, obwohl ich das schon recht kompliziert finde, dass man für das Anzeigen eines BalloonHints zuerst die OS-Version ermitteln soll. Die spinnen, die Redmonder :lol:


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:23 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