c++ use win32 group radio button

用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