MFC单选控件Radio Button与选择框控件Chexk Box使用指南

本文是学习鸡啄米VS2010入门教程的心得体会,特此记录下来方便日后查询。


单选控件就是点一下前面会有一个圆圈的控件,选择框就是点一下前面会打√的控件。

1.首先随便起个名建立一个MFC对话框项目,这里我起名为Univers。

2.新建2个Group Box控件,把Caption属性分别改为"游戏类型"和"游戏"。

3.在游戏类型Group Box控件内添加3个单选按钮Radio Button控件。

4.在"游戏"Group Box控件内添加如下图6个选择框控件Chexk Box控件。

5.然后为每个复选框添加CButton类型的变量m_check1、m_check2、m_check3、m_check4、m_check5和m_check6。

6.打开类选择CUniversDlg类,然后点击"成员变量",点击"添加变量",为IDC_CHECK1~6分别添加成员变量。

7.添加一个编辑框控件Edit Control,并把它的Read Only属性改为True。也就是只读属性,不允许编辑。在编辑框旁边加一个静态文本框修改标题为:选择的游戏。

8.打开类向导,给类CUniversDlg添加一个方法:InitAllCheckBoxStatus 下面是函数实现。此函数会在切换不同的游戏类型前初始化所有控件。

void CUniversDlg::InitAllCheckBoxStatus()
{

	// 全部禁用   
	m_check1.EnableWindow(FALSE);   
	m_check2.EnableWindow(FALSE);   
	m_check3.EnableWindow(FALSE);   
	m_check4.EnableWindow(FALSE);   
	m_check5.EnableWindow(FALSE);   
	m_check6.EnableWindow(FALSE);   

	// 全部非选中   
	m_check1.SetCheck(0);   
	m_check2.SetCheck(0);   
	m_check3.SetCheck(0);   
	m_check4.SetCheck(0);   
	m_check5.SetCheck(0);   
	m_check6.SetCheck(0);  


}


CButton::SetCheck函数


设置或重置单选按钮或复选框的状态。

void SetCheck(
   int nCheck 
); //函数原型


参数:

BST_UNCHECKED  --未选中状态也可以填数字0

BST_CHECKED    --选中状态也可以填数字1

BST_INDETERMINATE  --将按钮状态设置为不确定。仅当按钮具有BS_3STATE或BS_AUTO3STATE样式时,才能使用此值。

9.给3个单选按钮添加事件处理程序

void CUniversDlg::OnBnClickedRadio1()
{
	// TODO: 在此添加控件通知处理程序代码
	//选择"FPS"则激活CS GO和地铁2033
 

	InitAllCheckBoxStatus();//初始化所有控件的状态   
	m_check1.EnableWindow(TRUE);   
	m_check4.EnableWindow(TRUE);  

}


void CUniversDlg::OnBnClickedRadio2()
{
	// TODO: 在此添加控件通知处理程序代码
	//选择RPG则激活辐射4和最终幻想7


	InitAllCheckBoxStatus();   
	m_check2.EnableWindow(TRUE);   
	m_check5.EnableWindow(TRUE); 


}


void CUniversDlg::OnBnClickedRadio3()
{
	// TODO: 在此添加控件通知处理程序代码
	//选择ACG则激活 命运石之门和秋之回忆2


	InitAllCheckBoxStatus();   
	m_check3.EnableWindow(TRUE);   
	m_check6.EnableWindow(TRUE); 


}

CMFCToolBarComboBoxButton :: EnableWindow()函数

启用或禁用编辑框和组合框。

参数:TRUE启用编辑框,此时编辑框处于可打√的状态;FALSE禁用编辑和组合框,此时编辑框会处于灰色不可选中状态。

10.为了让窗口加载完成后默认选中第一项"FPS"需要设置一下CUniversDlg::OnInitDialog()函数。

	// TODO: 在此添加额外的初始化代码

	CheckDlgButton(IDC_RADIO1, 1); //修改按钮1的状态  
	OnBnClickedRadio1();   //激活相应的选择框 

COleControlContainer :: CheckDlgButton

修改按钮的当前状态。

virtual void CheckDlgButton(
   int nIDButton,
   UINT nCheck 
);


参数1:要修改的按钮的ID。

参数2:

指定按钮的状态。可以是以下之一:

BST_CHECKED    --将按钮状态设置为选中状态。

BST_INDETERMINATE    --将按钮状态设置为灰色,表示不确定状态。仅当按钮具有BS_3STATE或BS_AUTO3STATE样式时才使用此值。

BST_UNCHECKED    --将按钮状态设置为已清除。

11.选择完后点击确定让编辑框显示我们选中的项目,因此需要设置一下确定按钮的任务处理函数。


void CUniversDlg::OnBnClickedOk()
{
	// TODO: 在此添加控件通知处理程序代码
	//CDialogEx::OnOK();

	CString strWebsiteSel;// 选择的网站

	if (m_check1.GetCheck()==1)
	{
		strWebsiteSel += L"CS GO ";
	}

	if (m_check2.GetCheck()==1)
	{
		strWebsiteSel += L"辐射4 ";
	}

	if (m_check3.GetCheck()==1)
	{
		strWebsiteSel += L"命运石之门 ";
	}

	if (m_check4.GetCheck()==1)
	{
		strWebsiteSel += L"地铁2033 ";
	}

	if (m_check5.GetCheck()==1)
	{
		strWebsiteSel += L"最终幻想7 ";
	}

	if (m_check6.GetCheck()==1)
	{
		strWebsiteSel += L"秋之回忆2 ";
	}


	// 将结果字符串显示于“选择的游戏”后的编辑框中   
	SetDlgItemText(IDC_WEBSITE_SEL_EDIT, strWebsiteSel); //设置编辑框内的文本  

}

CButton::GetCheck


检索单选按钮或复选框的状态。


int GetCheck( ) const;


返回值:

BST_UNCHECKED  --按钮状态未选中。

BST_CHECKED   --按钮处于选中状态。

BST_INDETERMINATE  --按钮状态是不确定的(仅当按钮具有BS_3STATE或BS_AUTO3STATE样式时才适用)。


如果按钮具有任何其他样式,则返回值为BST_UNCHECKED。

最终效果:

示例工程:https://download.csdn.net/download/l198738655/10686052

猜你喜欢

转载自blog.csdn.net/l198738655/article/details/82838927
今日推荐