目录
一、创建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 )
: CDialogEx(IDD_SUMMATOR_DIALOG, pParent)
, g_num1(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);
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);
}
第四步、运行结果