【MFC练习入门篇——数青蛙】

有入门小朋友问如何写个数青蛙的MFC小程序。今天写一下。

首先打开VS,创建MFC项目。

搜索MFC,选择MFC应用,点击下一步。

后续默认选项就好。

在应用程序类型里选择【基于对话框】。点击完成,即可。

在打开的对话框编辑界面里,选择左侧的工具箱。

在工具箱里选择Edit Control控件,添加四个到空白对话框区域,分别对应青蛙数量,嘴数量,眼睛数量,腿数量。

控件对齐方式,四个编辑框全部选中,然后选择坐上侧的对齐方式按钮。进行对齐。

然后再添加四个静态文本框Static Text。对应四个编辑框。再添加一个文本框进行文本显示。

界面最后如下。

编辑对应代码。分别右键每个编辑框,添加对应的控件变量

cpp 复制代码
	int eye;
	int mouth;
	int leg;
	int frog;

双击每个编辑框,添加命令语句。

cpp 复制代码
void CMFCApplication2Dlg::OnEnChangeEdit1()
{
	// TODO:  如果该控件是 RICHEDIT 控件,它将不
	// 发送此通知,除非重写 CDialogEx::OnInitDialog()
	// 函数并调用 CRichEditCtrl().SetEventMask(),
	// 同时将 ENM_CHANGE 标志"或"运算到掩码中。
	UpdateData(TRUE);
	mouth = frog;
	eye = frog * 2;
	leg = frog * 4;
	CString str;
	str.Format(_T("Tips:\r%d只青蛙\r%d张嘴\r%d只眼睛\r%d条腿"), frog, mouth,eye,leg);
	SetDlgItemTextW(IDC_STATIC_tips, str);
	UpdateData(FALSE);
	// TODO:  在此添加控件通知处理程序代码
}


void CMFCApplication2Dlg::OnEnChangeEdit2()
{
	// TODO:  如果该控件是 RICHEDIT 控件,它将不
	// 发送此通知,除非重写 CDialogEx::OnInitDialog()
	// 函数并调用 CRichEditCtrl().SetEventMask(),
	// 同时将 ENM_CHANGE 标志"或"运算到掩码中。
	UpdateData(TRUE);
	frog = mouth;
	//嘴数量;
	eye = mouth * 2;
	leg = mouth * 4;
	CString str;
	str.Format(_T("Tips:\r%d只青蛙\r%d张嘴\r%d只眼睛\r%d条腿"), frog, mouth, eye, leg);
	SetDlgItemTextW(IDC_STATIC_tips, str);
	UpdateData(FALSE);
	// TODO:  在此添加控件通知处理程序代码
}


void CMFCApplication2Dlg::OnEnChangeEdit3()
{
	// TODO:  如果该控件是 RICHEDIT 控件,它将不
	// 发送此通知,除非重写 CDialogEx::OnInitDialog()
	// 函数并调用 CRichEditCtrl().SetEventMask(),
	// 同时将 ENM_CHANGE 标志"或"运算到掩码中。
	UpdateData(TRUE);
	if (eye%2!=0)
	{
		MessageBox( L"请输入2的倍数", L"错误");
	}
	else
	{
		
		frog = eye/2;
		mouth= eye/2;
		//eye = mouth * 2;
		leg = eye * 2;
		CString str;
		str.Format(_T("Tips:\r%d只青蛙\r%d张嘴\r%d只眼睛\r%d条腿"), frog, mouth, eye, leg);
		SetDlgItemTextW(IDC_STATIC_tips, str);
		UpdateData(FALSE);
	}
	// TODO:  在此添加控件通知处理程序代码
}


void CMFCApplication2Dlg::OnEnChangeEdit4()
{
	// TODO:  如果该控件是 RICHEDIT 控件,它将不
	// 发送此通知,除非重写 CDialogEx::OnInitDialog()
	// 函数并调用 CRichEditCtrl().SetEventMask(),
	// 同时将 ENM_CHANGE 标志"或"运算到掩码中。
	UpdateData(TRUE);
	if (leg % 4 != 0)
	{
		MessageBox(L"请输入4的倍数", L"错误");
	}
	else
	{
		
		frog = leg / 4;
		mouth = leg / 4;
		eye = leg / 2;
		//leg = eye * 2;
		CString str;
		str.Format(_T("Tips:\r%d只青蛙\r%d张嘴\r%d只眼睛\r%d条腿"), frog, mouth, eye, leg);
		SetDlgItemTextW(IDC_STATIC_tips, str);
		UpdateData(FALSE);
	}
	// TODO:  在此添加控件通知处理程序代码
}

最终效果

相关推荐
H Journey1 小时前
C++之 CMake、CMakeLists.txt、Makefile
开发语言·c++·makefile·cmake
研究点啥好呢5 小时前
Github热门项目推荐 | 创建你的像素风格!
c++·python·node.js·github·开源软件
_dindong5 小时前
cf1091div2 C.Grid Covering(数论)
c++·算法
沫璃染墨5 小时前
C++ string 从入门到精通:构造、迭代器、容量接口全解析
c语言·开发语言·c++
6Hzlia6 小时前
【Hot 100 刷题计划】 LeetCode 17. 电话号码的字母组合 | C++ 回溯算法经典模板
c++·算法·leetcode
计算机安禾7 小时前
【数据结构与算法】第36篇:排序大总结:稳定性、时间复杂度与适用场景
c语言·数据结构·c++·算法·链表·线性回归·visual studio
unicrom_深圳市由你创科技7 小时前
做虚拟示波器这种实时波形显示的上位机,用什么语言?
c++·python·c#
无限进步_7 小时前
【C++】电话号码的字母组合:从有限处理到通用解法
开发语言·c++·ide·windows·git·github·visual studio
C++ 老炮儿的技术栈7 小时前
GCC编译时无法向/tmp 目录写入临时汇编文件,因为设备空间不足,解决
linux·运维·开发语言·汇编·c++·git·qt
橘颂TA7 小时前
【笔试】算法的暴力美学——牛客 NC213140 :除2!
c++·算法·结构与算法