logo资料库

VC++6.0_MFC基于对话框简单计算器设计.doc

第1页 / 共19页
第2页 / 共19页
第3页 / 共19页
第4页 / 共19页
第5页 / 共19页
第6页 / 共19页
第7页 / 共19页
第8页 / 共19页
资料共19页,剩余部分请下载后查看
VC++MFC 基于对话框简单计算器设计 1 实现计算器功能如图: 用 VC++建立 MFC 基于对话框的简单计算器。 简易计算器设计说明: 1.三个编辑窗口: (1)其中两个为输入操作窗口:数 1、数 2,一个结果输出窗口。 (2)只有一个操作数时在第一操作窗口输入。 (3)键盘输入数据,运算符按钮输出结果。 2.多个运算操作按钮: (1)实现加减乘除的基本计算器功能。 (2)实现三角函数、对数、阶乘等的数值函数运算。 3.计算器设计过程: (1)首先建立 MFC 的基于对话框程序,命名为“TEST1” - 1 -
- 2 -
然后在对话框中加入三个编辑框,并用快捷键 CTRL+W 组合键打开 MFC ClassWizard 切换到 Member Variables 中其中找到 IDC_EDIT1、IDC_EDIT2、IDC_EDIT3 分别添加对应 的 3 个 double 型关联变量 m_EDIT1_NUM、m_EDIT2_NUM、m_EDIT3_NUM。 关联变量: - 3 -
在后双击编辑框改变编辑框函数名并添加函数:UpdateData(TRUE);其他两个编辑框均 进行此操作。 (2)在对话框中的适当位置添加 20 个按钮控件实现运算操作: a.操作说明按钮: 鼠标放在按钮控件上,右击鼠标点击属性,改变按钮属性标题为“操作说明”,然后双 击控件改变函数名并点击“确定”添加函数代码: //计算器操作说明 void CTEST1Dlg::OnINTR() { // TODO: Add your control notification handler code here - 4 -
MessageBox("例如 M+N=?,在第一个编辑框输入 M,第二个编辑框输入 N,然后再点击 运算符输出结果,减法、乘法、除法、取余等两个数运算的同理。只有一个数进行运算 的时候, 在第一个编辑框输入数,然后点击运算符输出结果!"); } b.两个数运算的按钮: 与添加“操作说明”按钮类似,比如加法, 改变按钮属性标题为“+”,然后双击控件 添加函数代码: //加法运算:m+n void CTEST1Dlg::OnADD() { // TODO: Add your control notification handler code here m_EDIT3_NUM=m_EDIT1_NUM+m_EDIT2_NUM; //m_EDIT3_NUM、 m_EDIT1_NUM、m_EDIT2_NUM 为三个编辑框的对应关联变量 GetDlgItem(IDC_EDIT2)->ShowWindow(SW_SHOW); //当执行双数运算时,重新显示 第二个编辑框 UpdateData(FALSE); } 其他的两个数运算的同理。 注意: GetDlgItem(IDC_EDIT2)->ShowWindow(SW_SHOW);我设计想法是当只有一个操作 数运算时隐藏第二个编辑框,此函数就是隐藏与显示的功能。IDC_EDIT2 是编辑框的关联 地址;SW_SHOW 便是执行显示编辑框,此外 SW_HIDE 是执行隐藏功能后面会用到。 - 5 -
c.只有一个数运算的按钮: 操作与上面一样,比如 x^2, 改变按钮属性标题为“x^2”,然后双击控件添加函数代 码: //平方运算:x^2 void CTEST1Dlg::OnPF() { // TODO: Add your control notification handler code here m_EDIT3_NUM=m_EDIT1_NUM*m_EDIT1_NUM; GetDlgItem(IDC_EDIT2)->ShowWindow(SW_HIDE); 个编辑框 UpdateData(FALSE); } 其他的一个数运算的同理。 //在只有一个操作数时,隐藏第二 d.第二个编辑框被隐藏后重新显示函数: void CTEST1Dlg::OnUpdateEdit1Show() { // TODO: If this is a RICHEDIT control, the control will not // send this notification unless you override the CDialog::OnInitDialog() // function to send the EM_SETEVENTMASK message to the control // with the ENM_UPDATE flag ORed into the lParam mask. // TODO: Add your control notification handler code here //GetDlgItem(IDC_EDIT2)->EnableWindow(TRUE); GetDlgItem(IDC_EDIT2)->ShowWindow(SW_SHOW); //激活编辑框 //当第一个编辑框重新输入数 据时,重新显示第二个编辑框 UpdateData(TRUE); } 注意: 这个函数要执行的功能是,当第二个编辑框被隐藏时,在第一个编辑框重新输入数 据的同时,重新激活第二个编辑框。如果想简单设计的话,之前的所有编辑框隐藏和显示函 数就不用添加。 e.三角函数的弧度制与角度制的切换: 在对话框中添加两个选择控件:Degree 和 Rad,第一个选择控件关联变量为 m_CDR, 添加方法和上面添加编辑框关联变量一样(注意:要关联变量必须把选择控件属性中的组勾 选,不然找不到选择控件的地址),并初始化为 m_CDR = 0;为零时选择框默认被选中。两个 选择控件是互斥的,当选中 Rad 时 m_CDR = 0,从而判断是执行角度制还是弧度制,然后 双击选择控件,添加代码 UpdateData(TRUE);以 sin(x)为例添加代码: //正弦函数运算:sin(x) void CTEST1Dlg::OnSin() { // TODO: Add your control notification handler code here if(m_CDR == 1) { m_FDR=1; //m_CDR 单选框关联变量,角度运算 - 6 -
} else { m_FDR=(2*PI)/360; } //弧度运算 m_EDIT3_NUM=sin(m_EDIT1_NUM*m_FDR); GetDlgItem(IDC_EDIT2)->ShowWindow(SW_HIDE); //在只有一个操作数时,隐藏第二 个编辑框 UpdateData(FALSE); } - 7 -
变量 m_FDR 添加方法:在右侧 ClassView 中的 CAboutDlg 鼠标右击选择 Add Member Variable….变量类型为:double,变量名为:m_FDR 同时记得添加头文件 math.h (3)在 BOOL CTEST1Dlg::OnInitDialog()函数中加入 SetWindowText(_T("计算器")); 改窗 口标题为“计算器”。 - 8 -
分享到:
收藏