1.新建-->项目-->MFC-->MFC应用程序
名称:加法器(可自行设定)
位置:自行设定
点击确定。如图1所示。
图1 新建项目
2.进入到MFC应用程序向导界面。没有说明的就选择默认设置。
在“应用程序类型”中我们选择“基于对话框”选项,其他默认。然后点击确认。如图2所示。
图2 选择应用程序类型
3.进入到对话框设计,删除掉默认生成的按钮。添加如下图所示的按钮(Button),编辑框(Edit Control),组框(Group Box),静态正文框(Static Text)。如图3所示。相关参数如图4所示。
图3 对话框设计
图 4 加法器各控件及其属性设置
4.界面做完了以后,就要开始编写程序了。
首先为各控件添加相关成员变量。项目-->类向导-->成员变量,分别为IDC_OPERATOR1,IDC_OPERATOR2和IDC_RESULT添加成员变量。例:双击IDC_OPERATOR1,在“成员变量名称”中输入m_fOperator1,在“类别”中选择Value,在“类型”中选择float,单击确定,成员变量m_fOperator1就被加入到变量列表中去了。其余类似。如图5所示。
图5 添加后的成员变量
5.为按钮添加功能实现函数。
项目-->类向导-->命令。分别为求和,清零添加响应的实现函数。
例:求和:IDC_ADD->BN_CLICKED->添加处理函数->编辑代码
void C加法器Dlg::OnClickedAdd()
{
UpdateData(true); //edit box中的值更新到变量中
m_fResult=m_fOperator1+m_fOperator2; //做加法运算
UpdateData(false); //变量的值更新到edit box显示
}
其中加黑的为自己添加的内容。
清零的相关消息响应函数类似。
void C加法器Dlg::OnClickedClear()
{
m_fOperator1=0.0f; //给变量赋值
m_fOperator2=0.0f;
m_fResult=0.0;
UpdateData(false); //变量的值更新到edit box显示
}
退出:
void C加法器Dlg::OnClickedCancel()
{
CDialog::OnCancel();
}
6.然后编译连接,最后检验一下编写的加法器。如图6所示。
图6 加法器使用实例
7.在制作过程中遇到的问题
在对话框中添加“求和”按钮后,双击了这个按钮,就生成了消息响应函数,然后在第5步中添加了重复的消息响应函数。觉着不对,就把双击生成的消息响应函数删除了,结果就报错了:
1>加法器Dlg.obj : error LNK2001: 无法解析的外部符号?"public: void __thiscall C加法器Dlg::OnBnClickedAdd(void)" (OnBnClickedAddC加法器Dlg@@QAEXXZ)
1>H:\DF\C\加法器\Debug\加法器.exe : fatal error LNK1120: 1 个无法解析的外部命令
最后发现是因为虽然删除了求和的消息响应函数,但是并没有完全删除,类头文件中的函数声明没有删除afx_msg void OnBnClickedAdd();,还有在BEGIN_MESSAGE_MAP()和END_MESSAGE_MAP()之间添加的消息响应函数ON_BN_CLICKED(IDC_ADD, C加法器Dlg::OnBnClickedAdd)没有删除。注释掉这两个之后,错误消失了。
如果还是报错出现1>加法器Dlg.obj : fatal error LNK1318: 非意外的 PDB 错误: OK (0)""
生成-->重新生成(Rebuild All)一下再试试看。