![]() |
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:
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? |
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 |
Schade :cry: dann muss ich mir was andres einfallen lassen!!
|
Hallo phlux,
Probiers doch mal mit scrollendem Titel. Damit könntest du dann den gesamten Text unterbringen. Gruss Jan |
Jan, das ist eine Prima Idee :D
|
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. |
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:
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.
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'; MfG, d3g |
:? 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:
|
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 |
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