用c++ 程式寫出radio button group的方法
將BS_AUTORADIOBUTTON的control id,設定為BS_GROUPBOX元件的hWnd,是錯的,沒效,沒有子父關係。
BS_AUTORADIOBUTTON 的control id 一樣要設定成視窗的hWnd。
radio button 正確的group做法是在每一組的第一個radion button 屬性加上WS_GROUP,即使沒有寫上BS_GROUPBOX元件,各個radion button也可以做成群組。
BS_GROUPBOX 只是顯示效果,實際沒有group元件的效用。
下面範例程式
/*Group for Radio button for preview/single or batch operation */
hGrpButtons=CreateWindowEx(WS_EX_WINDOWEDGE,
L"BUTTON",
L"Select Process Mode:",
WS_VISIBLE | WS_CHILD|BS_GROUPBOX,// <----BS_GROUPBOX 對群組實際沒有任何作用, UI效果而已
10,280,350,100,
hWnd,
NULL,
NULL);
//第1顆radion button
CreateWindowEx(WS_EX_WINDOWEDGE,
L"BUTTON",
L"first radio button",
WS_VISIBLE | WS_CHILD|BS_AUTORADIOBUTTON|WS_GROUP, // <---- WS_GROUP 將第1顆和第2顆radion button做成第一個選項群組
10,520,300,20,
hWnd, //<----- Use main window handle
(HMENU)IDC_CHK1,
hInst, NULL);
//第2顆radion button
CreateWindowEx(WS_EX_WINDOWEDGE,
L"BUTTON",
L"second radio button",
WS_VISIBLE | WS_CHILD|BS_AUTORADIOBUTTON, // Styles
10,545,300,20,
hWnd,
(HMENU)IDC_CHK2,
hInst, NULL);
//第3顆radion button
CreateWindowEx(WS_EX_WINDOWEDGE,
L"BUTTON",
L"third radio button",
WS_VISIBLE | WS_CHILD|BS_AUTOCHECKBOX|WS_GROUP, //<---Start 將第1顆和第2顆radion button做成第二個選項群組
10,570,300,20,
hWnd,
(HMENU)IDC_CHK3,
hInst, NULL);
//第4顆radion button
CreateWindowEx(WS_EX_WINDOWEDGE,
L"BUTTON",
L"forth radio button",
WS_VISIBLE | WS_CHILD|BS_AUTORADIOBUTTON, // Styles
500,545,300,20,
hWnd,
(HMENU)IDC_CHK4,
hInst, NULL);
Reference: https://stackoverflow.com/questions/17187265/how-to-group-radio-box-buttons-using-win32-api