1. 程式人生 > 其它 >單選與多選控制元件的簡單應用

單選與多選控制元件的簡單應用

  • 這裡不好理解的是選擇項分組,按Ctrl+D快捷鍵,先設定按鈕Tab順序,對編排介面的元素Tab順序,假Tab序號為1 ~ 3的分為一組,4 ~ 6分為一組,那麼設定序號1的選擇項屬性雜項->組 = True,設定序號4的選擇項屬性雜項->組 = True,這樣就可以進行分組了,各組選中項不互相干擾

  • 選項分組是按照序號的順序以及(控制元件屬性雜項->組)進行分組的,例如Tab序號為3的屬性True,那麼Tab序號為3以及之後的控制元件直到下一個屬性True的之前一個控制元件為一組

  1. 建立頁面控制元件

  2. 在此Dlg中的MFC類中的OnInitDialog()

    中設定單選的預設選項

BOOL CObjInfoDlg1::OnInitDialog()
{
	CDialogExt::OnInitDialog();

	// TODO:  在此新增額外的初始化

	((CButton*)GetDlgItem(IDC_RADIO4))->SetCheck(BST_CHECKED);//程式啟動時預設為單選按鈕1選中

	return TRUE;  // return TRUE unless you set the focus to a control
	// 異常: OCX 屬性頁應返回 FALSE
}
  1. 新增獲取選中按鈕按鈕的點選事件OnBnClickedButton2()
    ,獲取選中項的資訊,並進行自定義操作,多選操作同理
void CObjInfoDlg1::OnBnClickedButton2()
{
	m_selInfo.SetWindowTextA(_T(""));
	// TODO: 在此新增控制元件通知處理程式程式碼
	if (::SendMessage(::GetDlgItem(m_hWnd, IDC_RADIO1), BM_GETCHECK, NULL, NULL) == BST_CHECKED)//如果選擇了單選按鈕1
	{
		MessageBox(_T("選擇了單選按鈕1!"), NULL, MB_ICONINFORMATION);//彈出提示
		m_selInfo.SetWindowTextA(_T("選擇了單選按鈕1"));
	}
	else if (::SendMessage(::GetDlgItem(m_hWnd, IDC_RADIO4), BM_GETCHECK, NULL, NULL) == BST_CHECKED)//如果選擇了單選按鈕2
	{
		MessageBox(_T("選擇了單選按鈕2!"), NULL, MB_ICONINFORMATION);//彈出提示
		m_selInfo.SetWindowTextA(_T("選擇了單選按鈕2"));
	}
	else if (::SendMessage(::GetDlgItem(m_hWnd, IDC_RADIO5), BM_GETCHECK, NULL, NULL) == BST_CHECKED)//如果選擇了單選按鈕2
	{
		MessageBox(_T("選擇了單選按鈕3!"), NULL, MB_ICONINFORMATION);//彈出提示
		m_selInfo.SetWindowTextA(_T("選擇了單選按鈕3"));
	}


	if (::SendMessage(::GetDlgItem(m_hWnd, IDC_CHECK1), BM_GETCHECK, NULL, NULL) == BST_CHECKED)
	{
		MessageBox(_T("選擇了多選按鈕1!"), NULL, MB_ICONINFORMATION);//彈出提示
		CString cs;
		m_selInfo.GetWindowTextA(cs);
		m_selInfo.SetWindowTextA(cs +_T("\n選擇了多選按鈕1"));
	}
	if (::SendMessage(::GetDlgItem(m_hWnd, IDC_CHECK2), BM_GETCHECK, NULL, NULL) == BST_CHECKED)
	{
		MessageBox(_T("選擇了多選按鈕2!"), NULL, MB_ICONINFORMATION);//彈出提示
		CString cs;
		m_selInfo.GetWindowTextA(cs);
		m_selInfo.SetWindowTextA(cs + _T("\n選擇了多選按鈕2"));
	}
	if (::SendMessage(::GetDlgItem(m_hWnd, IDC_CHECK3), BM_GETCHECK, NULL, NULL) == BST_CHECKED)
	{
		MessageBox(_T("選擇了多選按鈕3!"), NULL, MB_ICONINFORMATION);//彈出提示
		CString cs;
		m_selInfo.GetWindowTextA(cs);
		m_selInfo.SetWindowTextA(cs + _T("\n選擇了多選按鈕3"));
	}
}