Problem beim checken von RadioButtons
-
Hallo,
Ich habe folgendes Problem:
Ich habe in einem Dialogfeld mehrere RadioButtons, die zu zwei Gruppen gehören. In den Gruppen darf dann immer nur ein RadioButton aktiv sein. Bei der ersten Gruppe funktioniert das auch. Allerdings immer wenn ich einen Radiobutton der zweiten Gruppe drücke, verschwindet der aus der ersten Gruppe (der RadioButton der vorher an war ist nun aus). Wenn ich dann wieder einen RadioButton aus der ersten Gruppe checke bleibt die Eintrag in der zweiten erhalten. Ich finde den Fehler einfach nicht...
Der Dialogfeld wird über Ressourcen erstellt:
IDD_INTEROPT DIALOGEX 6,6,289,168 CAPTION "Interface Optionen" FONT 8,"MS Sans Serif" STYLE WS_VISIBLE | WS_CAPTION | WS_SYSMENU EXSTYLE 0x00000000 BEGIN ... CONTROL "Taskleiste",SHOW_TASK,"Button",BS_RADIOBUTTON | WS_CHILD | WS_VISIBLE,24,25,106,8,0x00000000 CONTROL "Systray && Taskleiste",SHOW_SYSTASK,"Button",BS_RADIOBUTTON | WS_CHILD | WS_VISIBLE,24,37,106,8,0x00000000 CONTROL "Systray",SHOW_SYS,"Button",BS_RADIOBUTTON | WS_CHILD | WS_VISIBLE,24,49,96,9,0x00000000 CONTROL "Schließen",OIDC_GRP2,"Button",0x50000007,10,73,130,48,0x00000000 CONTROL "Programm beenden",OIDC_RBN3,"Button",0x50010009,20,88,102,9,0x00000000 CONTROL "Programm minimieren",OIDC_RBN4,"Button",0x50010009,20,101,108,11,0x00000000 ...So werden die Klicks verarbeitet:
case WM_COMMAND: switch(LOWORD(wParam)) { ... case SHOW_TASK: //Nur in der Taskleiste anzeigen CheckRadioButton(hwnd,SHOW_TASK,SHOW_SYS,SHOW_TASK); akt_optionen.show = TASKBAR; break; case SHOW_SYSTASK: //In Systray und Taskleiste anzeigen CheckRadioButton(hwnd,SHOW_TASK,SHOW_SYS,SHOW_SYSTASK); akt_optionen.show = SYSTASK; break; case SHOW_SYS: //Nur im Systray anzeigen CheckRadioButton(hwnd,SHOW_TASK,SHOW_SYS,SHOW_SYS); akt_optionen.show = SYSTRAY; break; case OIDC_RBN3: //Programm bei X beenden CheckRadioButton(hwnd,OIDC_RBN3,OIDC_RBN4,OIDC_RBN3); akt_optionen.CloseOnX = true; break; case OIDC_RBN4: //Programm bei X minimieren CheckRadioButton(hwnd,OIDC_RBN3,OIDC_RBN4,OIDC_RBN4); akt_optionen.CloseOnX = false; break; ... } return true;
-
is kein Fehler...is modal mann
-
Blödimann schrieb:
is kein Fehler...is modal mann
Das hat nix mit modal / nicht modal zu tun, sondern liegt daran,
dass du den Stil WS_GROUP beim ersten Radiobutton einer Gruppe setzen musst.Beispiel:
-- Gruppe 1 --
( ) Radio 1 WS_GROUP
( ) Radio 2
( ) Radio 3-- Gruppe 2 --
( ) Radio 4 WS_GROUP
( ) Radio 5
( ) Radio 6Doku findest du hier:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/winui/WindowsUserInterface/Windowing/Windows/WindowReference/WindowStyles.asp
-
@tvdog: thk, das wars