【MFC】学习笔记:对话框中添加控件和控件变量

MFC系列一直被搁置,找不到时间来写学习笔记。今天就先写一篇很基础的对话框里加控件与给控件设置控件变量。

本节不同于其他文章,直接用案例来感受对话框中添加控件和控件变量的理论概述.

创建对话框与修改对话框这里我就不说了,前面写过一篇:MFC学习笔记:创建与修改对话框不知道怎么创建的请跳转上一篇。

- 案例讲解

1.按照创建对话框的步骤创建一个标题为Calculators的基于对话框的工程.

2.切换到资源视图,如果没有,请点击视图->其他窗口->资源视图,就设置出来了。

3.删除掉Calcutors对话框里默认的static文本框。

4.点击左手边,或者右手边的工具栏(看设置,默认是在右手边)出现下图所示的界面。
工具栏
5.分别添加三个static Text,命名为数据 1,数据2,结果。三个Edit Control,并且分别选择Edit Control点击鼠标右键,选择添加变量->类别选择Value,变量类型选择int或者double都可以,分别取变量名为m_nData1.m_nData2,m_nData4.

6.选择Group Box拖动到对话框,改变大小,Caption设置为选择计算方式,在组对话框(Group Box)里面分别添加4个单选框按钮(Radio Box),设置第一个Group为TRUE,然后添加变量,类别为Value,变量类型选择int,变量名设置为m_nCalc,然后确定。

7.计算结果和退出程序将确定和取消拉到相应位置改一下caption,双击计算结果和退出程序,添加消息响应函数(三种添加消息响应函数,知道这一种就ok了,也是最常用的,没人会去用另外两种,这里不多介绍)

void CCalculatorsDlg::OnBnClickedOk()
{
	UpdateData(); //默认为TRUE,将控件值赋值给控件变量,MFC中有一节,我讲过这个函数.
	
	if(m_nCalc == 0)
	{
		m_nData3 = m_nData1 + m_nData2;
	}
	else if(m_nCalc == 1)
	{
		if(m_nData1 < m_nData2)
		{
			AfxMessageBox(_T("结果不能为负数,所以数据1不能小于数据2,请重新输入!"));
		}
		else
		{
			m_nData3 = m_nData1 - m_nData2;
		}
	]
	else if(m_nCalc == 2)
	{
		m_nData3 == m_nData1 * m_nData2;
	}
	else if(m_nCalc == 3)
	{
		if(m_nData2 == 0)
		{
			AfxMessageBox(_T("被除数不能为0,请重新输入!"));
		}
		else
		{
			m_nData3 = m_nData1 / m_nData2;
		}
	}

UpdateData(FALSE); //更新数据,计算结果,使控件变量赋值给控件。
}

//退出程序
void CCalculatorsDlg::OnBnClickedCance()
{
	//TODO在这里添加程序代码
	CDialogEX::OnCancel();
}

//程序中可以不使用UpdateData(),下面是另一个版本.用Window API实现.

void CCalculatorsDlg::OnBnClickedOk()
{
	UpdateData(); //默认为TRUE,将控件值赋值给控件变量,MFC中有一节,我讲过这个函数.
	
	if(m_nCalc == 0)
	{
		m_nData3 = m_nData1 + m_nData2;
		SetDlgItemInt(IDC_RADIO_RESULT,m_nData3); 
	}
	else if(m_nCalc == 1)
	{
		if(m_nData1 < m_nData2)
		{
			AfxMessageBox(_T("结果不能为负数,所以数据1不能小于数据2,请重新输入!"));
		}
		else
		{
			m_nData3 = m_nData1 - m_nData2;
			SetDlgItemInt(IDC_RADIO_RESULT,m_nData3); 
		}
	]
	else if(m_nCalc == 2)
	{
		m_nData3 == m_nData1 * m_nData2;
		SetDlgItemInt(IDC_RADIO_RESULT,m_nData3); 
	}
	else if(m_nCalc == 3)
	{
		if(m_nData2 == 0)
		{
			AfxMessageBox(_T("被除数不能为0,请重新输入!"));
		}
		else
		{
			m_nData3 = m_nData1 / m_nData2;
			SetDlgItemInt(IDC_RADIO_RESULT,m_nData3); 
			/*
			参数1:控件ID 参数2:计算结果的变量名
			*/
		}
	}
}

//第一个是必须用UpdateData的值的,因为你要将值动态赋值给变量,SetDlgItemInt这个函数是办不到的。

//退出程序
void CCalculatorsDlg::OnBnClickedCance()
{
	//TODO在这里添加程序代码
	CDialogEX::OnCancel();
}

8.程序图如下:
计算器

//数据交换的代码,程序自动添加,在你添加控件变量的时候(贴出来看下):
由于不能粘贴公司代码,只能网上找了一段数据交换的

void CAdditionDlg::DoDataExchange(CDataExchange* pDX)   
{   
    // 处理MFC默认的数据交换   
    CDialogEx::DoDataExchange(pDX);   
    // 处理控件IDC_SUMMAND_EDIT和变量m_editSummand之间的数据交换   
    DDX_Text(pDX, IDC_SUMMAND_EDIT, m_editSummand);   
    // 处理控件IDC_ADDEND_EDIT和变量m_editAddend之间的数据交换   
    DDX_Text(pDX, IDC_ADDEND_EDIT, m_editAddend);   
    // 处理控件IDC_SUM_EDIT和变量m_editSum之间的数据交换   
    DDX_Text(pDX, IDC_SUM_EDIT, m_editSum);   
}  

相信大家动手写一个这个案例之后,对对话框添加控件和添加控件变量就有了一定的了解了,这个时候自己再慢慢扩展一下,就非常的轻松了。
希望这篇文章对自学MFC的人有一定帮助,谢谢。
版权声明:转载请注明出处.

猜你喜欢

转载自blog.csdn.net/m0_43458204/article/details/106692648
今日推荐