PreTranslateMessage und Dialog
-
Ich möchte bei einem Dialog Tastendrücke verarbeiten. OnKeyUp usw. werden nicht für die Dialog-Klasse aufgerufen, sondern wohl nur für das Child-Control, dass gerade den Fokus hat. Das Internet rät mir, PreTranslateMessage zu überschreiben. Diese wird jedoch bei einem Tastendruck ebenfalls nicht aufgerufen. Was muss ich tun?
Der Dialog wird aus einem OCX heraus erzeugt, falls das irgendwie von Belang ist.
-
PreTranslateMessage ist der richtige Weg. Dort musst du dann noch überprüfen, welche Message vorliegt und ggfs welche Taste gedrückt wurde:
BOOL CMyDialog::PreTranslateMessage(MSG* pMsg){ if(pMsg->message == WM_KEYDOWN && pMsg->wParam==0x43) // mach was return CDialog::PreTranslateMessage(pMsg); }Damit sollte es eigentlich funktionieren. Falls nicht beschreib deinen Aufbau/Ablauf etwas genauer.
-
Genau das habe ich getan, die Methode wird jedoch, wie gesagt, gar nicht aufgerufen. Ich kann auf die Tasten hauen wie ein blöder, es tut sich nix. Gibt es irgendeine Dialog-Eigenschaft, die passend gesetzt werden muss o.ä.? Kann ja nicht sein, dass das bei allen funktioniert außer mir...
Versuch:
BOOL CDlgLumeneraMain::PreTranslateMessage(MSG* pMsg) { if(pMsg->message==WM_KEYUP) { // && pMsg->wParam==VK_NUMPAD0) { Sleep(0); } return CDialog::PreTranslateMessage(pMsg); }
-
Versuchs doch mal mit einem Standard-Dialog (neues Programm). Falls es dort funktioniert, wovon auszugehen ist, dann liegt es wahrscheinlich an der Initialisierung deines Dialogs.
-
Flockig schrieb:
Versuchs doch mal mit einem Standard-Dialog (neues Programm). Falls es dort funktioniert, wovon auszugehen ist, dann liegt es wahrscheinlich an der Initialisierung deines Dialogs.
Hmm, du musst wohl recht haben. Mit einer frischen, dialogbasierten MFC-Anwendung klappt's. Mir ist jedoch rätselhaft, was der entscheidende Unterschied ist, außer es hat etwas damit zu tun, dass mein Dialog in einem ActiveX-Control erzeugt wird.
Wenn jemand noch einen Tipp (besser Lösung :D) hätte, wäre ich sehr dankbar. Ansonsten klappere ich jetzt mal alle Unterschiede ab...
-
Evtl. trifft das bei Dir zu:
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/
-
Martin Richter schrieb:
Evtl. trifft das bei Dir zu:
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/Das war's! Wieder was gelernt. Mit Message Hook funktioniert's endlich.
