Dialog mit DropdownList reagiert nicht mehr nach klick auf die DropdownList
-
Hi Leute,
ich habe hier einmal die Resourcen:
LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL IDD_FILEMAN DIALOG 0, 0, 297, 232 STYLE DS_3DLOOK | DS_CENTER | DS_SHELLFONT | WS_CAPTION | WS_VISIBLE | WS_POPUP | WS_THICKFRAME | WS_SYSMENU EXSTYLE WS_EX_WINDOWEDGE CAPTION "FileManager" FONT 8, "Ms Shell Dlg" { CONTROL "", IDC_LV_FILES, WC_LISTVIEW, WS_TABSTOP | WS_BORDER | LVS_ALIGNLEFT | LVS_SINGLESEL | LVS_REPORT | LVS_SORTASCENDING, 104, 20, 192, 195, WS_EX_ACCEPTFILES CONTROL "", IDC_LV_FOLDER, WC_LISTVIEW, WS_TABSTOP | WS_BORDER | LVS_ALIGNLEFT | LVS_REPORT, 2, 41, 98, 174 COMBOBOX IDC_DD_HDD, 2, 23, 99, 30,WS_TABSTOP | CBS_DROPDOWNLIST | CBS_HASSTRINGS LTEXT "Static", IDC_ST_CUR_PATH, 4, 6, 291, 8, SS_LEFT }Mit hilfe dieser erstelle ich mit CreateDialogParam den Dialog.
In der Proc dafuer behandle ich nur WM_INITDIALOG + WM_CLOSE beim Rest returne ich gleich FALSE.
So wenn ich jetzt auf die DropdownList klicke erscheint das uebliche auswahl Dings wo bis jetzt aber ja leer ist. Wenn ich jetzt wieder wo anders hin klick passiert nichts der Dialog reagiert einfach nicht mehr.Und hier noch die Schleife falls wichtig:
while ((bRet = GetMessage(&msg, pFileManager->hWnd, 0, 0)) != 0) { if (bRet == 0) break; else IsDialogMessage(pFileManager->hWnd, &msg); }Jetzt ist halt die Frage woran das liegen kann?
Greetz
-
Keiner ne Idee was ich falsch mache?
Ich hab jetzt noch ein bissle rum probiert und bin zum Ergebnis gekommen, das wenn ich (wenn der Dialog nicht mehr reagiert) Tab drueck es zum naechste Controll springt und alles wieder geht. Und wenn ich mit Tab in die DropdownList rein spring kann ich durch die Pfeiltasten die Elemente auswaehlen die ich hinzugefuegt hab.
Vielleicht hilft ja da weiter.
Greetz C0de4Fun
-
C0de4Fun schrieb:
while ((bRet = GetMessage(&msg, pFileManager->hWnd, 0, 0)) != 0) { if (bRet == 0) break; else IsDialogMessage(pFileManager->hWnd, &msg); }Jetzt ist halt die Frage woran das liegen kann?
Deine Message Loop ist für die Füße.
Lies die Doku zu IsDialogMessage:Because the IsDialogMessage function performs all necessary translating and dispatching of messages, a message processed by IsDialogMessage must not be passed to the TranslateMessage or DispatchMessage function.
Umgekehrt gilt: Andere Nachrichten müssen natürlich an diese Funktionen übergeben werden.
while ((bRet = GetMessage(&msg, pFileManager->hWnd, 0, 0)) != 0) { if (bRet == 0) break; else if (!IsDialogMessage(pFileManager->hWnd, &msg)) { TranslateMessage(...); DispatchMessage(...); } }
-
Martin Richter schrieb:
...
Deine Message Loop ist für die Füße.
Lies die Doku zu IsDialogMessage:Because the IsDialogMessage function performs all necessary translating and dispatching of messages, a message processed by IsDialogMessage must not be passed to the TranslateMessage or DispatchMessage function.
Umgekehrt gilt: Andere Nachrichten müssen natürlich an diese Funktionen übergeben werden.
while ((bRet = GetMessage(&msg, pFileManager->hWnd, 0, 0)) != 0) { if (bRet == 0) break; else if (!IsDialogMessage(pFileManager->hWnd, &msg)) { TranslateMessage(...); DispatchMessage(...); } }Ersten danke schon mal fuer den Tip von dir. Hab das jetzt mal so abgeaendert aber leider immer noch mit dem selben Ergebnis :(. Soll ich vielleicht noch ein Stueck Code posten !?
Greetz C0de4Fun
PS: bin leider nicht so der Freund von guis muss aber gezwungender maßen darauf zurueck greifn.
-
OK ich habe jetzt bei:
GetMessage(.. pFileManager->hWnd...)einfach NULL eingesetzt und jetzt gehts :).
Jettz ist nur noch die Frage warum nur immer ein Item angezeigt wir wenn ich auf das Dreieck drueck. Haet schon probiert mit: ComboBox_SetMinVisible auf das default von 30 zu setzten aber hilft nix.
Greetz