| 函數 | 用途 | 範例 |
|---|---|---|
| CButton::SetCheck(int) | 設定選中狀態 | `SetCheck(1)` 選中,`SetCheck(0)` 取消 |
| CButton::GetCheck() | 取得狀態 | `0=未選 1=選中 2=不確定(三態)` |
| CWnd::GetCheckedRadioButton(idFirst, idLast) | 取得群組中被選中的 ID | `UINT id = GetCheckedRadioButton(IDC_SEX1, IDC_SEX2);` |
| CWnd::IsDlgButtonChecked(id) | 判斷單一按鈕是否被選 | `if (IsDlgButtonChecked(IDC_SEX1)) ...` |
避免為每個按鈕寫獨立 Handler,將連續 ID 範圍映射到同一函數:
// 在 BEGIN_MESSAGE_MAP / END_MESSAGE_MAP 之間手動加入
ON_CONTROL_RANGE(BN_CLICKED, IDC_HOBBY1, IDC_HOBBY3, OnHobbyClicked)
// 標頭檔聲明
afx_msg void OnHobbyClicked(UINT nCmdID);
// 實作
void CMyDlg::OnHobbyClicked(UINT nCmdID) {
switch (nCmdID) {
case IDC_HOBBY1: ...; break;
case IDC_HOBBY2: ...; break;
case IDC_HOBBY3: ...; break;
}
}
注意:ID 必須連續,否則需手動修改 `Resource.h` 宏定義。
屬性 `Tri-state = True` → 狀態:未選/選中/灰色(不確定)。常用於安裝程式「部分功能已選」。`SetCheck(2)` 設定灰色狀態。