Großes Problem mit IsDialogMessage
-
Hi, ich hab da ein Problem mit meiner MEssageSchleife:
bool CWindowsControls::CControl::HandleMessages(vector<HWND> vHwnd) { bool bDlgMsg = false; if (PeekMessage(&messages, NULL, 0, 0, PM_REMOVE)) { if(messages.message == WM_QUIT) return false; else { for(vector<HWND>::iterator it_vHwnd = vHwnd.begin(); it_vHwnd < vHwnd.end(); it_vHwnd++) { if(IsDialogMessage(*it_vHwnd, &messages)) { bDlgMsg = true; } } if(!bDlgMsg) { TranslateMessage(&messages); DispatchMessage(&messages); } } } return true; }so, ich benutze IsDialogMessage, weil ich gazn gerne mit TAB durch meine Controls scrollen möchte, doch wenn ich dann im Jeweiligen Cotronl ESC drücke wird ja die IDCANCEL nachricht an dieses FEsnter gesendet bzw WM_QUIT, wie ich kann ich verhindern, das die ESC nachrichten nicht meine Controls "errichen" und somit auch nicht behandelt werden ... Mit dem bisherigen Code shcliesset sich logischer weise das ganze Programm, da zwischen WM_QUIT an das "Control" und zwischen WM_QUIT an mein Fenster nicht unterschieden wird ... Habt ihr da eine Idee ?
Gruß Chris
-
http://www.c-plusplus.net/forum/viewtopic-var-t-is-199396.html Hat das nicht geholfen?
-
Nein und ich dachte mir damit ich mit meiner Frage mehr Leute erreiche, Formulier ich es nochmal schön xD
Das mit dem Handler is ja shcon ne gute idee, nur ich hab keine DlgProc in der ich seperat dieses Control abfragen könnte, das einzige was ich zum standart ablauf der message überprüfung geändert habe, ist der "IsDialogMessage" Aufruf um halt das "scrollen" mit der Tabtaste zu ermöglichen, ich zwar was du gemeint hast, aber nich direkt wie ichs umsetzen soll .. mit fehlt da noch ein kleiner ansatz

Gruß Chris
-
Ich denke mal mein Problem siehst du schon in meinem Code, sobald "WM_QUIT" kommt, arbeitet mein programm garnicht erst weiter.. und nun wiollte wissen hab ich was in der Abfrage falsch gemacht, oder kommt die WM_QUIT message erst NACH der WM_COMMAND / IDCANCEL MEssage, diese FRagen beschäftigen mich im moment noch...

-
Fang bitte einfach WM_COMMAND IDCANCEL ab und leite es nicht an die default dialog proc weiter. Wie behandelst Du IDCANCEL
-
man verdammt, hab ne sache vergbessen, klappt nun endlich, brett vorm kopf autsch !
Gruß Chris