![]() |
Klick wird nicht erkannt!?
Hallo,
Delphi-Quellcode:
Ja wo bleibt denn meine Message? Die erscheint einfach nicht.
procedure TForm1.WndProc(var Message: TMessage);
begin case Message.Msg of WM_TRAYMSG: case Message.lParam of WM_RBUTTONDOWN : begin ShowMessage('Blupp'); end; end; else inherited WndProc(Message); end; end; Grüsse, Daniel :hi: |
Hallo Daniel,
hast Du WM_TRAYMSG in TNotifyIconData auch als uCallBackMessage angegeben? |
Hallo Jens,
ja, habe ich. Linker Doppelklick geht, aber rechter Einfachklick nicht. Seltsam, seltsam... Grüsse, Daniel :hi: |
Hallo Daniel,
es ist wirklich seltsam. Eigentlich müsste es funktionieren. Poste daoch mal den kompletten Code: |
Hi,
Kenn mich damit jetz nich sooo astrein aus, aber gibts vielleicht irgendwo (bei der Form, beim TNA-Symbol) ne Eigenschaft die den Rechtsklick noch für ein eventuelles PopUp- Menü reserviert hat, die du erst "falsen" musst? :? Bis dann, S - tefano |
Hallo Daniel,
es ist wirklich seltsam. Eigentlich müsste es funktionieren. Poste doch mal den kompletten Code. Ich verwende für den Botschaftswert bei TBNA Anwendungen immer RegisterWindowMessage um eine systemweit eindeutige uCallBackMessage zu bekommen |
Hallo Jens,
ich vermute eher das die Klick schon "erkannt" wird, aber die Message an sich warum auch immer nicht angezeigt wird.
Delphi-Quellcode:
const
WM_TRAYMSG = WM_USER + 10; var NID : TNotifyIconData = ( cbsize : sizeof(TNotifyIconData); uID : 0; uFlags : NIF_MESSAGE or NIF_ICON or NIF_TIP; uCallbackMessage : WM_TRAYMSG; szTip : 'Blupp'; );
Delphi-Quellcode:
Grüsse, Daniel :hi:
procedure TForm1.WndProc(var Message: TMessage);
begin case Message.Msg of WM_TRAYMSG: case Message.lParam of WM_RBUTTONDOWN : begin ShowMessage('Blupp'); end; end; else inherited WndProc(Message); end; end; |
Hallo,
Zitat:
Grüsse, Daniel :hi: |
Hallo Daniel,
du setzt das Feld Wnd in TNotifyIconData nicht auf das Handle des Formulars . Woher weiss dann das System an welches Fenster es die Nachricht schicken soll ? |
Hallo Jens,
und wie mach ich das? Ich beschäftige mich grad zum ersten mal mit dem API-Mis*. :mrgreen: Grüsse, Daniel :hi: |
Hallo Daniel,
so macht man das
Delphi-Quellcode:
Du initialisierst TNotifyIconData im var Abschnitt. Davon kann ich nur abraten. Schreibe Die lieber ne Methode und mach es dort.
procedure TFormWTC.ShowInTBNA;
var aNID : TNotifyIconData; begin with aNID do begin cbSize := SizeOf(TNotifyIconData); Wnd := Handle; // Hier wird das Handle des Formulars übergeben !!! uID := cTaskBarId; uFlags := NIF_MESSAGE or NIF_ICON or NIF_TIP; uCallBackMessage := WM_TRAYMSG; hIcon := LoadImage(hInstance, PChar('WTC16'), IMAGE_ICON, 16, 16, 0); szTip := 'WTC'; end; Shell_NotifyIcon(NIM_ADD, @aNID); Application.ShowMainForm:=False; ShowWindow(Application.Handle,SW_HIDE); end; |
Hi,
Aber dann würd doch der linke Doppelklick auch nicht gehen, oder? Und so Sachen wie WM_TRAYMSG und so hast du auch richtig deklariert? Oder ist das vielleicht auch unter Win32 plattformabhängig? Hab ich vor wenigen Tagen erst mit Hooks erlebt, das man mit denen unter NT-Systemen wegen der verschiedenen Messages ganz anders arbeiten muss als unter 9x... Bis dann, S - tefano Nachtrag Mist, zu langsam; Mist, falscher Einfall. |
Hallo Daniel,
ich verwende RegisterWindowsMessage um den Wert für die uCallBackMessage zu erhalten. Dieser Wert ist dann systemweit eindeutig. Dann sieht das ganze so aus:
Delphi-Quellcode:
Im constructor dann
FTaskBarMessage : Word;
Delphi-Quellcode:
FTaskBarMessage := RegisterWindowMessage('JSWTCTaskBarMessage');
Delphi-Quellcode:
Die Sache funktioniert unter Win9x,NT und 2000
procedure TFormWTC.WndProc(var Message: TMessage);
begin If Message.Msg=FTaskBarMessage then begin Case Message.lParam of WM_RButtonDown : ShowPopupMenu; end; end; inherited; end; |
Hallo,
hmm, ich befürchte das es die ganze Zeit schon ging. Nur das nach dem komplizieren, das Editorfenster ja noch sichtbar ist, daher wurde die Message dahinter angezeigt. Sieht wohl so aus und da ich immer mit Strg+F2 Beende, fällt das auch nicht auf das die Message da noch irgendwo ist sondern mit verschwindet. Jetzt wird die Message angezeigt und ich kann mich jetzt mal dem Menü zuwenden... Aber trotzdem Danke vielmals für die Hilfe Jens! :thuimb: Grüsse, Daniel :hi: |
Moin Jens,
um ganz sicher zu gehen lasse ich für den zu registrierenden Text immer ein GUID generieren (STRG-SHIFT-G) |
Hallo Christian,
gute Idee. Danke |
Moin Jens,
danke für die Rückantwort. Da konnte ich mir noch mal den dusseligen Satz ( :oops: ) durchlesen und korrigieren. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:17 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