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 Größe von szTip des TNotifyIconData ändern (https://www.delphipraxis.net/2321-groesse-von-sztip-des-tnotifyicondata-aendern.html)

phlux 17. Jan 2003 19:33


Größe von szTip des TNotifyIconData ändern
 
Hi!
Also mein Progrämmchen hat eine TrayIcon Kompo, nur das Problem ist, der String der angezeigt wird wenn man mit der Maus über das Icon gleitet ist zu kurz(?!). Also ich möchte z.B. folgenden String unterbringen
Zitat:

DMX - X Gonna Give It To Ya: 02:32 (3:52)
Playing - Right Click Pauses Player
Das ganze wird jede Sekunde einmal upgedatet, jedoch poppt sofort der Debugger auf, wenn der Timer startet :|
Ist es jetzt möglich durch das Überschreiben der TNotifyIconData die Größe zu verändern, wenn ja wie, oder bin ich da aufm falschen Dampfer, was die Fehlersuche betrifft?

d3g 17. Jan 2003 20:43

Hi phlux,

dein Text ist (inklusive eines #13#10) 78 Zeichen lang, in TNotifyIconData ist aber nur ein Array von 64 Zeichen für den Text vorgesehen. Da dies von Microsoft so festgelegt ist, ist es nicht möglich, einen längeren Text als 64 Zeichen als Hint anzuzeigen (es wäre zwar theoretisch mit einer Pointerübergabe auf einen nullterminierten String möglich, aber wahrscheinlich hat Microsoft das nicht implementiert, damit die Programme nicht den ganzen Desktop mit ihren Hints zupflastern ;-)).

MfG,
d3g

phlux 17. Jan 2003 20:49

Schade :cry: dann muss ich mir was andres einfallen lassen!!

Jan 17. Jan 2003 21:15

Hallo phlux,
Probiers doch mal mit scrollendem Titel.
Damit könntest du dann den gesamten Text unterbringen.
Gruss
Jan

phlux 17. Jan 2003 21:21

Jan, das ist eine Prima Idee :D

Christian Seehase 17. Jan 2003 21:34

Moin d3g,

unter ME/2000 ff darf szTip 128 Zeichen umfassen, ausserdem kann man auch eine erweiterte NOTIFYICONDATA Struktur verwenden, die man sich dann aber wohl auch selber deklarieren müsste.

Ich glaube wir haben hier im Forum auch schon Beispiele dafür.

d3g 18. Jan 2003 12:49

Hi phlux,

gut, in diesem Fall müsstest du mit dieser Struktur arbeiten können. Wichtig ist, dass dein Programm dann erst ab Windows ME/2000 funktioniert.
Delphi-Quellcode:
type
  TNotifyIconDataEx = record
    cbSize: DWORD;
    hWnd: THandle;
    uID: UINT;
    uFlags: UINT;
    uCallbackMessage: UINT;
    hIcon: THandle;
    szTip: array[0..127] of Char;
    dwState: DWORD;
    dwStateMask: DWORD;
    szInfo: array[0..255] of Char;
    uTimeout: UINT;
    szInfoTitle: array[0..63] of Char;
    dwInfoFlags: DWORD;
    guidItem: TGUID;
  end;
  PNotifyIconDataEx: ^TNotifyIconDataEx;

function Shell_NotifyIcon(dwMessage: DWORD; lpdata: PNotifyIconDataEx); external 'shell32.dll';
Ich kann es nicht ausprobieren, da ich kein Windows zur Verfügung habe (ich müsste erst wieder meinen Bootloaer umkonfigurieren etc.), aber wenn es keine Probleme mit dem union in der C-Struktur gibt, dann sollte es funktionieren.

MfG,
d3g

phlux 18. Jan 2003 12:56

:? Danke für den Tipp, aber wenn das Programm dann nur noch unter Me und aufwärts läuft ist das ein bisschen sch..lecht, es gibt noch genug Benutzer die auf Win98 schwören (mein Cousin zb) und da wäre es doch irgendwie blöd wenn ich diese User-Gruppe ausschließen würde :mrgreen:

Jan 18. Jan 2003 16:44

Hallo phlux,
da gibt es dann 2 Möglichkeiten, oder nein, sogar 3:
1.: Du bringst dein Programm in mehreren versionen heraus, so wie das allgemein üblich ist, z.b. eine win98 and below und eine für ME and above oder so.
2.:du lässt dein Programm das jeweilige OS auslesen und machst dann davon abhängig was das programm so alles macht. Auf me würde dann zum Beispiel ein langeer tip erscheinen und unter 98 würde er der Text vielleicht scrollen.
3.: Du suchst dir von Anfang an nur eine Lösung (abgekürzter Text oder scrollen) Wobei diese Lösung natürlich die einfachste, langweiligste und am wenigsten mit lernen verbundendste ist.

Jetzt liegt es an dir.
gutes Gelingen!
bb
Jan

phlux 19. Jan 2003 10:34

Ich werd das ersma jetzt aufschieben und später realisieren, werde mich aber wohl so entscheiden dass ich das Programm so schreib das es zwischen Win9x und Me/2k unterscheidet, das hab ich ja erst vor kurzem ausm Code rausgelöscht :lol:


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