VC++6.0 MFC基于对话框简单计算器设计

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

VC++MFC基于对话框简单计算器设计1 实现计算器功能如图:

用VC++建立MFC基于对话框的简单计算器。

简易计算器设计说明:

1.三个编辑窗口:

(1)其中两个为输入操作窗口:数1、数2,一个结果输出窗口。

(2)只有一个操作数时在第一操作窗口输入。

(3)键盘输入数据,运算符按钮输出结果。

2.多个运算操作按钮:

(1)实现加减乘除的基本计算器功能。

(2)实现三角函数、对数、阶乘等的数值函数运算。

3.计算器设计过程:

(1)首先建立MFC的基于对话框程序,命名为“TEST1”

然后在对话框中加入三个编辑框,并用快捷键CTRL+W组合键打开MFC ClassWizard 切换到Member Variables中其中找到IDC_EDIT1、IDC_EDIT2、IDC_EDIT3分别添加对应的3个double型关联变量m_EDIT1_NUM、m_EDIT2_NUM、m_EDIT3_NUM。

关联变量:

在后双击编辑框改变编辑框函数名并添加函数:UpdateData(TRUE);其他两个编辑框均进行此操作。

(2)在对话框中的适当位置添加20个按钮控件实现运算操作:

a.操作说明按钮:

鼠标放在按钮控件上,右击鼠标点击属性,改变按钮属性标题为“操作说明”,然后双击控件改变函数名并点击“确定”添加函数代码:

void CTEST1Dlg::OnINTR() //计算器操作说明

{

// TODO: Add your control notification handler code here

MessageBox("例如M+N=?,在第一个编辑框输入M,第二个编辑框输入N,然后再点击运算符输出结果,减法、乘法、除法、取余等两个数运算的同理。只有一个数进行运算的时候,在第一个编辑框输入数,然后点击运算符输出结果!");

}

b.两个数运算的按钮:

与添加“操作说明”按钮类似,比如加法,改变按钮属性标题为“+”,然后双击控件添加函数代码:

void CTEST1Dlg::OnADD() //加法运算:m+n

{

// 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是执行隐藏功能后面会用到。

c.只有一个数运算的按钮:

操作与上面一样,比如x^2,改变按钮属性标题为“x^2”,然后双击控件添加函数代码:

void CTEST1Dlg::OnPF() //平方运算:x^2

{

// 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)为例添加代码:

void CTEST1Dlg::OnSin() //正弦函数运算:sin(x)

{

// TODO: Add your control notification handler code here

if(m_CDR == 1)

{

m_FDR=1; //m_CDR单选框关联变量,角度运算

相关文档
最新文档