平台/工具:VS2010
目的:利用VS2010平台创建一个MFC工程,实现多功能计算器的程序编写和界面设计
项目分析:首先是根据功能进行界面设计:需要一个供编辑和显示的编辑框 、多种运算符按钮(“+”“-”“×”“÷”“平方”“开方”“指数”“log”)、0~9数字按钮、“=”和“.”按钮、辅助功能按钮(“关于软件”“清零”“后退”);其次是添加一些类和功能代码”
方法步骤:
Step 1: MFC工程创建部分
建立一个不使用Unicode库的MFC工程,工程命名为“多功能计算器”。
注意:Unicode(统一码、万国码、单一码)是一种在计算机上使用的字符编码。Unicode 是为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言、跨平台进行文本转换、处理的要求。1990年开始研发,1994年正式公布。(百度百科)
但是使用该库时,汉字等字符需要在前面加上“_T”,比较麻烦,为了简便,不选择该库。
Step 2:主对话框设计部分
(1)建立好基于对话框的工程后,将默认主对话框上的几个控件均删除:删除“TODO: 在此放置对话框控件。” 删除“确定”“取消”按钮。
(2)添加编辑框(Edit Control)控件到主对话框顶部,用于显示用户的输入以及计算结果,拖动修改其大小;选中该编辑框->右键->添加变量->Control类别对应的变量类型为CEdit,变量名为m_edit, Value类别对应的变量类型为CString,变量名为m_str,如下两图所示:
(3)添加按钮控件到主对话框,调整按钮大小,为了保持大小一致,可以先添加一个按钮,然后复制粘贴。编辑按钮的Caption属性为适当的名字,数字按钮的ID改为IDC_NUM_0、IDC_NUM_1…… IDC_NUM_9;操作符按钮的ID改为IDC_ADD,IDC_DEC,IDC_MULTIPLY,IDC_DIVIDE (上述分别为“+”“-”“×”“÷”的ID),IDC_SQUARE,IDC_SQRT,IDC_EXP,IDC_LOG (上述为“平方”“开方”“指数”“log”的ID);“关于软件”的ID为IDC_ABOUT_BUTTON,“后退”的ID为IDC_BACK_BUTTON,“清零”的ID为IDC_CLEAR_BUTTON,“=”的ID为IDC_EQUAL,“.”的ID为IDC_DEMICAL。设计完成的主对话框如下图所示:
Step 3:代码添加部分
设计好主对话框后,开始双击按钮进入主程序中相应的位置,添加消息处理程序。
(1)首先在××Dlg.h(主程序头文件,××是你建立的工程名,如工程名为“多功能计算器”,则主程序头文件为“多功能计算器Dlg.h”)中主对话框类中的公有成员(public:)中添加代码,如下图所示,红框内为手动添加的代码:
(2)在××Dlg.cpp主程序中添加如下代码:
①在程序顶部包含cmath头文件:#include “cmath”(因为开方函数sqrt()、指数函数pow()需要该头文件)
②在初始化函数BOOL C多功能计算器Dlg::OnInitDialog()中添加m_edit.SetWindowText(“”);将编辑框初始化为空
③双击主对话框中的按钮,主程序会自动添加其消息响应函数,在函数体中添加实现代码:
A、“关于软件”按钮的代码:
void C多功能计算器Dlg::OnBnClickedAboutButton() //“关于软件”按钮
{
// TODO: 在此添加控件通知处理程序代码
//----添加的代码-----------------
CAboutDlg dlg;
dlg.DoModal();
//此处没有做过多的编辑,直接调用MFC程序创建时系统自动生成的“关于”对话框
//--------------------------------
}
B、“后退”按钮的代码: