有入门小朋友问如何写个数青蛙的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: 在此添加控件通知处理程序代码
}
最终效果