单选与多选控件的简单应用

  • 这里不好理解的是选择项分组,按Ctrl+D快捷键,先设置按钮Tab顺序,对编排界面的元素Tab顺序,假Tab序号为1 ~ 3的分为一组,4 ~ 6分为一组,那么设置序号1的选择项属性杂项->组 = True,设置序号4的选择项属性杂项->组 = True,这样就可以进行分组了,各组选中项不互相干扰

  • 选项分组是按照序号的顺序以及(控件属性杂项->组)进行分组的,例如Tab序号为3的属性True,那么Tab序号为3以及之后的控件直到下一个属性True的之前一个控件为一组

  1. 创建页面控件
    image

  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"));
	}
}

posted @ 2022-12-11 18:16  SpringBreath  阅读(156)  评论(0编辑  收藏  举报