Veständnisfrage zum CListCtrl und WM_LBUTTON_UP Nachricht
-
Hallo,
ich habe feststellen müssen dass der Message Handler in meiner abegeleteten Klasse für die Nachricht WM_LBUTTON_UP nicht aufgerufen wird.
Jetzt habe ich gemerkt dass die NOTIFY Message NM_CLICK genaua dem WM_LBUTTON_UP entspricht, warum auch immer.
Aber was ich nicht verstehe ist:
Spy Tool zeigt dass Messages WM_LBUTTON_DOWN und WM_LBUTTON_UP bei einem Mausclick ausgelöst werden. Wenn aber bei PreTraslateMessage diese Nachrichten abgefangen werden dann fehlt wieder die WM_LBUTTON_UP.
Ist es nicht so dass Spy den Inhalt der MessageQueue zeigt? Dann aber müsste doch der PreTranslateMassege diese Nachricht empfangen da das dierekt nach dem Ausbau aufgerufen wird bevor diese an die WndProc weitergegeben wird? Wo verliert sich die Message?
-
1. Wenn Du in PreTRanslateMessage WM_LBUTTONDOWN/UP behandelst nd TRUE zurück gibst, dann wird die Nachricht nicht an das Fenster weitergereicht!
2. Hast Du eine DLL hier?
PreTranslateMessage wird nur dann für Nachrichten aufgerufen wenn die Message-Loop auch auch aus der MFC ausgeführt wird.
http://blog.m-ri.de/index.php/2008/07/04/mfc-fenster-in-anderen-applikationen-verwenden/
http://blog.m-ri.de/index.php/2007/08/18/wann-message-reflection-nicht-funktioniert/
-
Ich glaube wir verstehen uns falsch.
Da der Message Hnadler in meine CMyListCtrl Klasse nicht augerufen werden kann (anscheined unterdrückt CListCtrl dieses) kam ich auf die Idee die Nachricht WM_LBUTTON_UP in PreTraslateMassege abzufangen. Das Ergebnis war jedoch gleich d.h. die Nachricht kam nicht, war aber mit Spy zu sehen.
Dieses gilt aber nicht für WM_LBUTTON_DOWN Nachricht.Normale MFC Anwednung.
-
Deine Schreibweise stimmt auch nicht, es heißt WM_LBUTTONDOWN WM_LBUTTONUP
Kann ich nicht bestätigen. Meine CListCtrls bekommen die Nachrichten.
Läuft bei Dir ein Hook, der die Nachricht frisst...Bist Du sicher, dass Du einen Eintrag in der Message Map hast? Aber OK, dann müsste auch PreTranslateMessage anspringen.
-
Ich habe etwas vergessen. Es handelt sich um selbsgezeichneten CListCtrl.
Ja die Einträge sind durch Wizard generiert aber nach Überprüffung auch drin (d.h. in der MsgMap als auch die dazugehörige Fkts).
Noch komischer ist es dass nach einem Doppelcklick die MouseUp Message erscheint.
Ein Doppelcklick laut Spy:
Down
Up
DblClick
UpUnd hier löst nur der 2. Up den Aufruf.
Daraufhin habe ich probeweise NM_Click eingefügt und diese enspricht auf einmal dem MouseUp Ereignis.Deshalb bin ich etwas verwirrt.