VS2019/MFC学习笔记之一(创建对话框工程并实现简单加法运算)

目录

一、创建MFC项目

二、源文件介绍

三、简单加法运算实例

1、界面设计

第一步、修改对话框名称

第二步、添加一个静态文本框(Static Text)

第三步、添加一个编辑框(Edit Control);

第四步、添加一个按钮(Button)

第五步、运行效果

2、代码实现

第一步、添加控件变量

第二步、添加消息处理函数

第三步、在消息处理函数添加自定义功能

第四步、运行结果


一、创建MFC项目

1、打开Visual Studio 2019,点击创建新项目;

2、选择MFC应用

3、配置新项目,在项目名称中键入项目名称;

4、在应用程序类型选择基于对话框,点击完成;

二、源文件介绍

framework.h:一些基本的MFC组件和扩展的头文件;

pch.h:预编译头文件;

Resource.h:界面和控件相关文件;

summator.h:创建CsummatorApp类;

summatorDlg.h:创建对话框CsummatorDlg类,所有和对话框中控件相关的函数都在此文件中声明;

targetver.h:定义Windows版本头文件;

pch.cpp:与预编译标头对应的源文件;

summator.cpp:定义应用程序的类行为;

summatorDlg.cpp:对话框实现文件;

三、简单加法运算实例

1、界面设计

第一步、修改对话框名称

方法:右键对话框打开属性修改对话框名称,在描述文字(Caption处键入“加法运算器”,运行后界面如下;

第二步、添加一个静态文本框(Static Text)

方法:打开工具箱,找到Static Text,选中(按键不松)直接拖到对话框中即可(或左键点击选中后,在对话框内再点击一次鼠标左键),鼠标移至虚线框上黑点处,左键点击并拖动可以改变控件大小;

右键属性,找到描述文字处键入“被加数”;

第三步、添加一个编辑框(Edit Control)

方法:打开工具箱,找到Edit Control,选中(按键不松)直接拖到对话框中即可(或左键点击选中后,在对话框内再点击一次鼠标左键),鼠标移至虚线框上黑点处,左键点击并拖动可以改变控件大小;

按照以上方法分别添加“加数”、“结果”的文本框和编辑框

第四步、添加一个按钮(Button)

方法:打开工具箱,找到Button,选中(按键不松)直接拖到对话框中即可(或左键点击选中后,在对话框内再点击一次鼠标左键),鼠标移至虚线框上黑点处,左键点击并拖动可以改变控件大小;

右键属性,在描述文字处键入“计算”

第五步、运行效果

2、代码实现

第一步、添加控件变量

方法:右键编辑框,选择添加变量,将类别修改成,将变量类型修改成double,并在名称处输入你想取的变量名,此处为g_num1,按照此方法依次添加剩下两个编辑框控件变量,此处变量名为g_num2、g_sum;

 

设置完控制变量后,在summatorDlg.cpp文件可以见到如下代码:


CsummatorDlg::CsummatorDlg(CWnd* pParent /*=nullptr*/)
	: CDialogEx(IDD_SUMMATOR_DIALOG, pParent)
	, g_num1(0) /*启动对话框时显示0*/
	, g_num2(0)
	, g_sum(0)
{
	m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}

void CsummatorDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialogEx::DoDataExchange(pDX);
	DDX_Text(pDX, IDC_EDIT1, g_num1);/*编辑框ID和变量的数据交换*/
	DDX_Text(pDX, IDC_EDIT2, g_num2);
	DDX_Text(pDX, IDC_EDIT3, g_sum);
}

void CsummatorDlg::DoDataExchange(CDataExchange* pDX)

如果我们在程序运行界面中ID为IDC_EDIT1的编辑框中输入被加数,会通过DoDataExchange()函数将输入的值保存到g_num1变量中,反之如果程序运行中修改了变量 g_num1的值,则通过DoDataExchange()函数也可以将新的变量值显示到ID为IDC_EDIT1的编辑框中。

但是这种数据交换机制中,DoDataExchange() 并不是被自动调用的,而是需要我们在程序中调用 CDialogEx::UpdateData()函数,由 UpdateData() 函数再去自动调用 DoDataExchange()的。

函数:UpdateData() ;

原型:BOOL UpdateData(BOOL bSaveAndValidate = TRUE);

参数:表示传递方向,TRUE 表示从 控件 传给 变量FALSE 表示从 变量 传给 控件。默认值是 TRUE,即从 控件 传给 变量;

返回值:如果传递成功函数返回TRUE ,反之返回FALSE

第二步、 添加消息处理函数

方法:

1、双击控件按钮,系统直接跳转到summatorDlg.cpp文件,并自动生成如下代码

void CsummatorDlg::OnBnClickedButton1()
{
	// TODO: 在此添加控件通知处理程序代码
}

2、右键控件按钮,选择类向导,再点击添加处理程序,可修改函数名称,点确定即可;

消息类型
消息说明
BN_CLICKED单击
BCN_DROPDOWN在用户单击拆分按钮上的下拉箭头时发送
BCN_HOTITEMCHANGE热项或突出显示的项已更改
BN_DOUBLECLICKED双击
BN_KILLFOCUS控件已丢失输入焦点
BN_SETFOCUS控件已获得输入焦点
NM_GETCUSTOMSPLITRECT在绘制拆分按钮之前由按钮控件发送给其父级
NV_CUSTOMDRAW将自定义绘图操作通知父级
NM_THEMECHANGED主题已更改

 

 第三步、在消息处理函数添加自定义功能

void CsummatorDlg::OnBnClickedButton1()
{
	// TODO: 在此添加控件通知处理程序代码

	/*将控件上的数据保存到对应的变量中*/
	UpdateData(TRUE);

	/*讲两个变量进行求和运算*/
	g_sum = g_num1 + g_num2;

	/*将更新后变量的值更新到对应的控件上进行显示*/
	UpdateData(FALSE);
}

第四步、运行结果

 

 

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值