Radio Button(單選按鈕)通常成組使用,同一組內同一時間僅能有一個被選中。在 MFC 中,分組的關鍵在於**第一個 Radio Button 的屬性必須勾選 "Group"**,後續同組按鈕不勾選 Group,直到下一個勾選 Group 的按鈕出現,才開始新的一組。
// 選中 IDC_RADIO1
((CButton*)GetDlgItem(IDC_RADIO1))->SetCheck(TRUE);
// 取消選中
((CButton*)GetDlgItem(IDC_RADIO1))->SetCheck(FALSE);
// 讀取狀態:1 為選中,0 為未選中
int state = ((CButton*)GetDlgItem(IDC_RADIO1))->GetCheck();
適用於簡單場景,無需在 ClassWizard 中新增成員變數。
m_ctrlRadio1。m_ctrlRadio1.SetCheck(TRUE);、m_ctrlRadio1.GetCheck();注意:同一組只能為第一個按鈕建立 Control 變數,其他按鈕不可再建立。
m_nRadio1。m_nRadio1 = -1 表示全不選;0 選第一個;1 選第二個,以此類推。UpdateData(TRUE) 後檢查 m_nRadio1 的值。假設有四個 Radio Button:Radio1、Radio2、Radio3、Radio4,欲分為兩組(1、2 為一組;3、4 為一組)。
m_nRadio1、m_nRadio4(或 Control 變數)。關鍵規則:Group 屬性標記該組的**起始按鈕**,編譯器依 Tab Order 判斷組別範圍。
ClassWizard 為各按鈕生成 BN_CLICKED 處理函數,手動同步 int 變數值:
void CMyDlg::OnRadio1() { m_nRadio1 = 0; }
void CMyDlg::OnRadio2() { m_nRadio1 = 1; }
void CMyDlg::OnRadio3() { m_nRadio4 = 0; }
void CMyDlg::OnRadio4() { m_nRadio4 = 1; }
| 按鈕角色 | Group | Tabstop | Auto |
|---|---|---|---|
| 組內第一個 | ✓ | ✓ | ✓ |
| 組內其他 | ✗ | ✓ | ✓ |