MFC DLL und PreTranslateMessage
-
Hi,
Ich habe eine Dll in VC++ programmiert, die einen Modeless Child Dialog beinhaltet. Der Dialog wird nun auch wunderbar als childdialog der aufrufenden Exe erstellt. Leider empfängt mein Dialog keine Nachrichten (speziell die nachricht eines Tastendruckes). Ich hab es mit PreTranslateMessage probiert, diese wird jedoch gar nicht aufgerufen. In OnCommand habe ich versucht mit const MSG* pMsg = GetCurrentMessage(); die aktuelle nachricht zu bekommen, doch diese ist immer WM_COMMAND. Weiß einer von euch, wie ich meine Nachrichten abfangen kann und dementsprechend eine Funtion starten kann? Ich bin dankbar für jede lösung *g*.
Danke für die Hilfe
-
Das musst du afaik in der DLL abfangen und dort bearbeiten!
-
Könntest du mir bitte auch noch sagen wo und wie ich das ganze abfangen muss? Ich habs mit der PreTranslateMessage meiner CWinApp probiert, aber da kommt auch nichts an. Ich hab mal drangehängt, wo und wie mein Dialog erstellt wird. Bitte helft mir, ich bin am verzweifeln

CMain *Main = new CMain; //Create a new Dialog int init() { AFX_MANAGE_STATE(AfxGetStaticModuleState()); CWnd pParent; pParent.Attach(plugin.hwndParent); if (!::IsWindow(Main->GetSafeHwnd())) Main->Create(IDD_MAIN, &pParent); Main->ShowWindow(SW_SHOW); pParent.Detach(); return 0; }
-
Es ist genauso einfach, einen Dialog in einer DLL zu starten wie in der Exe. Der Code zum Ausführen ist genau der Gleiche, ausser, dass halt, wie bei MFC-DLLs üblich, ein AFX_MANAGE_STATE(AfxGetStaticModuleState()); davor stehen muss.
-
Das funktioniert ja auch wunderbar, mein Problem ist nur, das Der in der DLL erstelle Dialog keine nachrichten (ledeglich die OnCommand wird in der Dialogklasse aufgerufen) empfängt, also PreTranslateMessage des Dialoges, die in einer normalen Exe aufgerufen wird, nicht aufgerufen wird. Wie kann ich jetzt z.b. WM_KEYDOWN innerhalb des Dialoges überprüfen?