基于对话框的程序设计案例(计算器)

合集下载

VC++对话框与常用控件-计算器

VC++对话框与常用控件-计算器



4.2.4 为CMyCalculatorDlg类添加数据成员
为 了 实 现 计 算 器 功 能 , 我 们 需 要 向 CMyCalculatorDlg 类 ( 即 MyCalculatorDlg.h文件中)添加变量。变量属性和用途如下表。
数据类型
double
double double CString
对话框与常用控件
教学目标
掌 握 Button 、 Edit Box 和 Static Text控件的创建和使用方法 掌握基于对话框的应用程序的编程技 术
《Visual C++程序设计》电子教案----王明福编
教学内容
MyCalculator程序 演 示 开发MyCalculator程

§4.1 MyCalculator程序
返回目录
4.2.1 创建工程
创建MyCalculator工程的步骤: (1) 启动Visual C++6.0。从“File”菜单中选择“New” ; (2) 在New对话框中选择“Project”标签 ,然后指定工程类型MFC AppWizard[exe]、工程名MyCalculator和工程位置D:\MyVC; (3) 点击“OK”按钮,弹出MFC AppWizard-Step 1对话框。选择 “Dialog based”单选按钮,创建一个基于对话框的应用程序; (4) 单击“Finish” 按钮。此时Visual c++6.0将显示NewProject Information窗口; (5) 单 击 “ OK” 按 钮 。 于 是 , Visual C++6.0 就 会 创 建 MyCalculator工程以及相关的所有文件。

简单MFC程序设计(编写一个小型计算器)

简单MFC程序设计(编写一个小型计算器)
} void CTestDlg::OnButtonNum0() {
if(dotflag==1) {
quan= quan*10; m_Num += 0 / (double)quan; } else { if(numflag==1) {
m_Num = m_Num * 10 + 0; } else m_Num = 0; } numflag = 1; mark=1; UpdateData(FALSE); } void CTestDlg::OnButtonZhengfu() { UpdateData(); m_Num = 0-m_Num; UpdateData(FALSE); } void CTestDlg::OnButtonDengyu()
m_Num = m_Num * 10 + 8; } else m_Num = 8; } numflag = 1; mark=1; UpdateData(FALSE); } void CTestDlg::OnButtonNum9()
5
{ if(dotflag==1) { quan= quan*10; m_Num += 9 / (double)quan; } else { if(numflag==1) { m_Num = m_Num * 10 + 9; } else m_Num = 9; } numflag = 1; mark=1; UpdateData(FALSE);
是否为数字的 int 型标志 mark。
c) 然后考虑到在计算过程中 num1 和 num2 的储存状态有三种,num1==0 和
num2==0,也就是程序开始运行还没有开始录入数字的状态;num1!=0 和
num2==0,也就是第一个数字已经录入,第二个数字还没有录入的状态这时

MFC入门教程之简易计算器制作

MFC入门教程之简易计算器制作

MFC入门之简易计算器制作最近自学MFC,入门的时候走了不少弯路,所以特做此教程,希望能帮助一些人能够快速入门,少走一些弯路。

这个教程就是通过一个简易计算器的制作让大家了解MFC界面编程的基本步骤和几个常用控件的使用方法。

使用软件Visual C++ 6.0.首先,新建一个MFC基于对话框的工程。

点击文件-新建,在工程选项卡里选择MFC AppWizard[exe],给工程命名Jisuan。

点击确定。

在接下来的向导里选择基于对话框,其他选项使用默认即可,之间点击完成。

先给大家介绍一下Visual C++ 6.0的界面。

左边框起来的是文件资源控制区,默认有三个选项卡,分别是ClassView、ResourceView和FileView。

分别用来显示类、资源和文件。

中间这个主要操作区呢,就是我们用来设计界面和编程的窗口了。

现在这个是IDD_JISUAN_DIALOG资源,如图所示。

右边那个是控件工具箱,如果没有显示的话可以右击菜单栏空白区域,把控件前打上对号即可。

然后给大家介绍一下今天需要用到的控件。

如左图所示,今天主要需要用到四个控件。

第一个是静态文本控件,就是可以往对话框上放一些静态的文字。

第二个是编辑框,它是可以往里面输入文字的。

第三个是组合框,它是把用来给对话框分区,使界面更加美观明了。

第四个是按钮控件,是用来点一下产生某个操作的。

上面那个是编辑框,下面这个是按钮控件。

点一下控件,拖到对话框上,即可使用。

下面我们可以这样布局:上面两个编辑框里输入数字,中间四个按钮分别是+ - * /,然后下面编辑框里显示数字。

下面开始给大家介绍第一个最重要的操作,就是属性操作。

我们想让这些控件的显示文字改变,就需要修改它的属性。

选定某个控件,右击,选择属性,即可来改变它们的属性了。

我们挨个控件介绍。

首先是组合框。

组合框的属性,我们看到有一个ID,一个标题。

首先说明一点,每个控件都必须有一个ID值,而且一般每个控件的ID值不能相同。

基于文本框的计算器设计

基于文本框的计算器设计

长沙理工大学物理与电子科学学院嵌入式系统课程设计题目:ARM文本框计算器设计学生姓名:陈佑平学号:20085611022班级: 电信08-02班专业:电子信息科学与技术指导教师:唐俊龙唐立军周晓萍同组成员:张琳、朱朗、梁雨哲、朱单于成绩:2011年12月7日长沙理工大学课程设计任务书物理与电子科学学院电子信息科学与技术专业信号0802班课程名称嵌入式系统B题目ARM文本框计算器设计同组设计者:张琳、朱朗、梁雨哲、朱单于一、已知技术参数和设计要求1.已知技术参数(详见技术资料)1)UP-NETARM 2410-S 开发平台硬件说明书(1)2410-S开发平台硬件资源(2)2410-S开发平台的外部连接方式概况(3)S3C2410 ARM MPU 体系结构框图(4)UP-NETARM 2410-S开发平台硬件架构(5)部分电路原理说明(6)资源占用情况(7)2410-S开发平台跳线设置说明(8)2410-S开发平台部分接插件和扩展插座接口定义(9)电路原理图及PCB丝印等请参考电子版的高清晰PDF 文件。

2)ARM2410-SforUCOS实验指导书(1)嵌入式开发系统资源概况(2)嵌入式系统开发环境简介(3)ADS1.2 开发环境(4)嵌入式系统硬件驱动基础开发案例(5)嵌入式系统核心开发案例(10)嵌入式系统应用编程API函数.(11)嵌入式系统参考电路原理图2.设计要求与应完成的任务(1)利用文本框编程实现一个简单的计算器(2)并在超级终端上显示计算的结果。

(3)资料查阅和程序设计独立完成。

(3)其它扩展功能的确定可以在小组内商讨。

(4)提交一本规范的、装订形式统一的研究报告。

三、工作计划(1)时间本课程设计时间安排为2011年11月28日至2011年12月9日,即第14、15周,共2周(2)进度安排第14周熟悉资料,构思结构,程序设计;第15周程序调试,整理文件报告。

指导教师:唐俊龙文勇军贺慧勇唐立军周晓萍2011年11月18日教研室意见:同意按任务书要求设计教研室主任年月日目录1 设计任务与要求 (6)2 引言 (7)3 硬件设计 (8)4 软件设计 (8)5 调试过程及问题分析 (13)6 结论 (14)参考文献 (14)附录 (15)一设计任务及要求1.设计任务:ARM文本框计算器设计2.设计要求:(1)利用文本框编程实现一个简单的计算器(2)并在超级终端上显示计算的结果。

MFC基于对话框设计的简易计算器源代码

MFC基于对话框设计的简易计算器源代码
return TRUE;
return CDialog::PreTranslateMessage(pMsg);
}
void CCALDlg::OnButton9()
{
// TODO: Add your control notification handler code here
UpdateData(true);
m_edit3=m_edalse);
}
void CCALDlg::OnButton7()
{
// TODO: Add your control notification handler code here
if(m_edit1==0)
{
MessageBox("不能对0求倒数");
return;
}
m_edit3=1/m_edit1;
UpdateData(false);
}
void CCALDlg::OnButton6()
{
// TODO: Add your control notification handler code here
{
if(pMsg->message==WM_KEYDOWN&&pMsg->wParam==VK_RETURN)
return TRUE;
if(pMsg->message==WM_KEYDOWN&&pMsg->wParam==VK_ESCAPE)
}
void CCALDlg::OnButton2()
{
// TODO: Add your control notification handler code here

基于MFC的科学计算器编程

基于MFC的科学计算器编程

三,特殊功能介绍
(1)屏蔽键盘信息,代码如下: CEdit* pEdit = (CEdit*)GetDlgItem(IDC_EDT_OUTPUT); pEdit->SetReadOnly(true); //将编辑框设置为只读模式(屏蔽键盘消息) 之后添加消息处理函数 BOOL CCalculator::PreTranslateMessage(MSG* pMsg)实现捕捉键盘信 息的功能(仅限于数字)。 (2)动态改变光标位置,将编辑框上显示的字符串定义为 m_string,以当前光标所在位置
}
}
else if(m_stringcal.GetAt(n)=='.')
{
rate=0.1f;
}
else
{
break;
}
}
float intempcal = sqrtf(itemp);
CString strtempr =
m_stringcal.Right(m_stringcal.GetLength()-n);
m = m + 1;
Cha[m] = '+';
m = m + 1;
rate = 10.0f;
mark = 0;
}
else
{
Cha[m] = '+'; m = m + 1; } } else if(m_stringcal.GetAt(i)=='-') { if(mark == 1) { Num[m] = itemp; itemp = 0; m = m + 1; Cha[m] = '-'; m = m + 1; rate = 10.0f; mark = 0; } else { Cha[m] = '-'; m = m + 1; } } else if(m_stringcal.GetAt(i)=='x') { if(mark == 1) { Num[m] = itemp; itemp = 0; m = m + 1; Cha[m] = 'x'; m = m + 1; rate = 10.0f; mark = 0; } else { Cha[m] = 'x'; m = m + 1; } } else if(m_stringcal.GetAt(i)=='/') { if(mark == 1) {

Visual C++基于对话框的MFC应用程序---计算机辅助排课应用实例实验三

Visual C++基于对话框的MFC应用程序---计算机辅助排课应用实例实验三

3 计算机辅助排课示例ch3演示利用计算机进行辅助排课的过程,启动程序后,屏幕显示应用程序窗口(如图3-1所示)。

图3-1在对话框左下角的编辑框中输入课程名称并按回车,可以将课程添加到对话框左边、标题为课程名的列表框中。

如下图所示选中课程名列表框中的某门课程,然后用鼠标点击右边列表框的任一单元格,即可将该门课程加入其中,如要更改,只需重选一门课程再点击一次而已。

加入课程后的界面(如图3-2所示)。

图3-2按[返回]按钮,程序弹出一个消息框,请用户确认是否要退出本程序,以确定退出还是继续运行(如下图所示)。

3.1 列表视图控件1.对话框界面设计使用AppWizard生成基于对话框的应用程序,工程文件取名为:ch3。

对话框界面设计(如图3-3所示)。

图3-3制作步骤如下:(1)在生成的对话框中删除[TODO:在这里设置对话控制。

]静态框和[取消]按钮,并将[确认]按钮的文本改为[返回];(2)选中控件工具栏中列表视图(List Control)按钮,在对话框中添加2个列表视图框,左边显示课程名,标识符为:IDC_LIST1;右边显示课程表,标识符为:IDC_LIST2。

两者在属性对话框Styles页中进行设置(如图3-4所示),在其他属性页中均取默认设置。

图3-4(3)添加文本编辑框,取默认属性,标识符为:IDC_EDIT1;(4)添加静态文本框,显示内容为:课程表。

适当调整对话框个控件大小与位置,得到最后的界面设计(如图3-3所示)。

3.2 代码设计1.添加成员变量和响应函数通过类向导,在CCh3_3Dlg类中,分别为编辑控件及两个列表视图控件添加三个成员变量:m_Edit1、m_List1、m_List2。

为CCh3_3Dlg类添加非控件类型的成员变量:int类型的OkFlag和CString类型的List1ToList2,这两个变量的作用将在后面的代码中加以说明。

添加的方法如下:(1)在项目管理工作区中右击CCh3_3Dlg类,在弹出菜单中选择[Add Member Variable…]菜单项,弹出Add Member Variable对话框(如图3-5所示);图3-52.添加代码首先通过类向导分别为控件IDC_LIST1、IDC_LIST2、IDC_EDIT1以及IDOK标识添加单击事件的响应函数OnClickList1( )、OnClickList2( )、OnChangeEdit1()、OnOK( )。

C语言程序设计编程任务书

C语言程序设计编程任务书

开发一个计算器程序-.软件目标所开发软件的目标是开发一个基于对话框的计算器应用程序。

其所能实现的具体功能有加、减、乘、除、平方、开方,以及各种函数变换,并且能够将输入错误的数值清除后再进行重新输入。

-.软件设计基本操作流程1.在VC6.0中新建一个MFC应用程序,以xxx」命名,选择基于对话框形式,点击确定。

2.在程序的主界面上设计计算器的操作界面,如添加数字按钮和功能按钮以及编辑框和相应框。

3.为按钮、编辑框、相应框添加相应函数,并且在DLG文件中加入变量和函数。

4•设计对话框的内容,如个人信息等。

界面风格界面主要以计算机的操作界面为主,整个界面均布有数字键,功能键和清除按键.而没有添加其他的按键和文字,整体设计十分简单。

软件功能模块整个界面的正上方是计算器的输入和输出界面,左侧为数字按键,而右侧则为功能按键。

三•软件实现过程1.用MFC AppWizard(exe)创建一个基于对话框应用程序(1)打开VC6.0,选择文件〉新建〉工程〉MFCAppWizard(exe)。

(2)输入自己的工程名称为xxxJL,点击确认。

(3)在接下来的应用向导中选择基本对话框选项,点击完成后进入主界面。

2.主界面(1)在dialog ±右键选择插入一个Dialog,在弹出的对话框中录入开发者的相关信;-■wangyulresources& 巳Dialogg⑵ 点击IDD_XXX_1_DIALOG,布置计算器主界面,如图三・添加MFC ClassWizardMessageMaps Member Variables | Automation | ActiveX Events Class Info | Project Add Cjass...AddFunctionObject IDs : Delete FunctionIDC^BUT TO_CAL CULATE IDC IDC IDC IDC DUTTO BUTTO DUTTOBUTTONUMONUM1NUM2NUM3 CalcV/indow DefV/indnwP DcstroyWindDoDataExchDoModalGetScrollBa Edit CodeMemberfunctions VDuDataExchangcWON 」DC_BUTTO_CALCULATE :BN_CLICKED ONJDC_BinTO_CLEAR :BN_CLICKED UN_IDC_BUrrO_NUk4U :Description:确定取消I编写程序的头文件,加入程序运行必要的头文件,包括#inelude “string.h” #inelude n math.h n #include !stdlib.h nClass name : C^...\wangyu 1 \wangyu 1 Dlg.h, C^...\wangyu 1 Dlg.cpp Messages :在类向导中关联各个按钮,并一一对应BEGIMJdESSflGEJ-IAPtCWangyu^lDlg, CDialog)//{{fiFX MSGJ1AP(CWangyu_1Dlg)ONWH SVSCOMMfiND()OH Z WM Z PAIHTC)ON_WM_QUERVDRAGICON() ON_BN_CLICKED(IDC_BUTTON1, OnButtonl)ON_BN_CLICKED(IDC_BUTTO_MUM1 , OnButtoNuiml)编辑数字键所对应的函数代码,其他数字也按如下方式编写void CXxx_lDlg::OnButtoNuml{) // 数字键1 的响应事件{ UpdateData(l); //MFC的窗口函数,刷新编辑框的数据if(m_str= =■•")//如果之前没有进行输入,则1为第一个输入的数字m_str 二T:elsem_str+=Ii r1;//如果之前有输入,则1及之前输入的数字一起组成新的数字UpdateData(O);}清除按钮的函数代码void CXxx_lDlg::OnButtoClear() // 清除按键的响应事件{ UpdateData(l);m_str=""; //将编辑框的内容清除UpdateData(O);}各个符号运算{ UpdateData(l);if(m_str二二"”)〃判断前面是否有数字输入m_str=""; 〃若前面无数字输入,则点击"+"无效,将显示框还原elsem_str+二“+“;//若前面有数字输入,则将”+“连接到数字的后面UpdateData(O);}void CXxx_lDlg::OnButtonOperation2() 按键的响应事件{ //原理及”+”的代码相同UpdateData(l);if(m_str 二二")m_str='u,;elsem_str+=n-n;UpdateData(O);}void CXxx_lDlg::OnButtonOperation3() // 键的响应事件{ //原理及的代码相同UpdateData(l);m_str=,u,;elsem_str+=n*";UpdateData (0);)void CXxx_lDlg::OnButtonOperation4() /厂7”按键的响应事件{ //原理及”+”的代码相同UpdateData(l);if(m_str= =m,)elsem_str+=,7H;UpdateData(O);}以及高级运算的计算void CXxx_lDlg::OnButtonOperation5() // ■平方•按键的响应事件{ UpdateData(l);if(m_str==,,H)//前面没有数字输入,则点击无效elseint i=atoi(m_str); //利用cstnng中的atoi函数将字符串转换成整型类型的数字平方运算m_str.Format(H«d-,i); //利用format函数将整数转换为字符串类型}UpdateData(O);)void CXxx_lDlg::OnButtonOperation6() // ■开方•按键的响应事件{ UpdateData(l);if(rn_st r==-)//前面没有数字输入,则点击无效m_str=-;else{float f; //定义float类型的变量f,用来存储开方的结果int num=atoi(m_str); //利用cstring中的atoi函数将字符串转换成整型类型的数字f=sqrt(num); //开方的函数m_str.Format(^.2f:f);〃利用format函数将浮点数类型转换为字符串类型}UpdateData(O);)void CXxx_lDlg::OnButtonOperation7() // "sin"按键的响应事件{ UpdateData(l);if(m_str==,H,)//前面没有数字输入,则点击无效m_str="";else{float仁atof(m_str); //利用cstnng中的atof函数将字符串类型转换成float类型,方便操作float y=sin(f);//三角函数运算m_str.Format(%2f“,y); //利用format函数将浮点数类型转换为字符串类型}UpdateData(O);)void CXxx_lDlg::OnButtonOperation8() //M cos M按键的响应爭件{ UpdateData(l);if(m_str==,H,)//前面没有数字输入,则点击无效m_str 二";else{float仁atof(m_str); //利用cstnng中的atof函数将字符串类型转换成float类型,方便操作float y=cos(f);H三角函数运算m_str.Format(%2f“,y); //利用format函数将浮点数类型转换为字符串类型}UpdateData(O);}void CXxx_lDlg::OnButtonOperation90//"tan"按键的响应爭件{ UpdateData(l);if(m_str==,,H)//前面没有数字输入,则点击无效m_str=-;elsefloat仁atof(m_str); //利用cstnng中的atof函数将字符串类型转换成float类型,方便操作float y=tan(f);//三角函数运算m_str.Fomnatni2f“,y); //利用format函数将浮点数类型转换为字符串类型}UpdateData(O);}相应的运算关系为for(int j=i+l,m=O;j<len;j++){ latter*=m_str.GetAt(j);}float sl=atof(former);//定义float类型的变量si,用来存储将former字符串转换为float型数字的结果。

开发一个简单计算器程序-基于对话框

开发一个简单计算器程序-基于对话框
6.在加法计算按钮的消息影射函数OnAdd和得到计算结果的消息影射函数OnEqual中分别输入下列代码:
void CCalculatorDlg::OnAdd()
{
// TODO: Add your control notification handler code here
UpdateData(TRUE);//得到用户输入的数据
控件类型
ID号
Caption
其它
Button
IDC_ADD

Button
IDC_SUB

Button
IDC_MUL
×
Button
IDC_DIV
/
Button
IDC_SIN
sin
Button
IDC_COS
cos
Button
IDC_SQU
x^2
Button
IDC_REC
1/x
Button
IDC_EQUAL
5.为运算符按钮添加相应的消息映射函数:点击菜单“View→ClassWizard”,选中“Message Maps”标签,目标ID号中选择“IDC_ADD”,在“Messages”中选择“BN_CLICKED”,双击,弹出“添加成员函数”对话框,默认函数名为“OnAdd”,点击“OK”。同理,为其它各运算对应的ID号添加成员函数。
其中UpdateData( )是MFC的窗口函数,用来刷新数据。当括号内的变量为TRUE时,用窗体上控件中的内容来更新和控件相关联的成员变量值;当括号内的变量为FALSE时,正好相反,将控件的关联成员变量的值传给控件并在控件中显示出来。
同理,在其它运算按钮的消息影射函数中添加相应的计算代码如下:
void CCalculatorDlg::OnCos()

MFC实验二 对话框程序设计

MFC实验二 对话框程序设计

实验二对话框程序设计(一) 实验目的:1 学习如何创建对话框程序,并想其中添加控件。

2 学习如何使用对话框来打开和保存文件。

3 学习创建消息对话框。

在Windows程序中,对话框是最重要的显示信息和取得用户数据的单元;一个应用程序可以拥有几个对话框,这些对话框从用户那里接受特定类型的信息;可以使用资源编辑器创建对话框资源,向其中添加控件,调整对话框的布局,使对话框更加便于使用。

(二) 实验内容:应用实例创建一个基于对话框的应用程序,并添加文件菜单,用来打开和保存文件;建立消息对话框,用来提醒用户在退出前保存文件;同时建立一个属性页对话框,掌握其基本用法。

(三) 实验步骤:实验一:创建简单的对话框应用程序1.使用AppWizard创建一个基于对话框类型的程序Prog01。

在AppWizard的第一页选择“Dialog based” ,生成标准对话框模板。

2.可以设置对话框的属性,右键单击整个对话框的背景,选择“Properties”项,在弹出的对话框中修改此对话框ID为:IDD_PROG01_DIALOG,标题为:“简单计算器”。

当对话框资源完成以后,选择ctrl+w,打开ClassWizard,已经有一个类Prog01Dlg与新的对话框相联系。

3.在控件工作栏点击要添加的空间图标,选择所需的控件。

一共要添加三个静态文本框、三个编辑框、五个命令按钮。

可以改变空间的大小、位置、对齐方式等等。

4.添加控件结束后,设置各个控件的属性。

右键需要设置属性的控件,在弹出的菜单中选择Prperties,或选中控件按回车键。

各个控件的属性设置如下图。

下表列出了本题中所有控件的属性设置以及添加的成员变量:5.为控件添加相对应的成员变量。

执行xiew-class wizard命令或者Ctrl+w,选择member variables ,可以在对话框类中为控件添加关联的成员变量和删除变量。

以第一个编辑框为例,成员变量名为m_floatFirstNum,float型。

基于GUI的简易计算器设计ppt课件

基于GUI的简易计算器设计ppt课件
%字符串合并函数strcat()将按键"0"与numbers的值合并,将合并后的字符串 返回到输入文本框edit1的string属性;
set(handles.edit1,'string',strcat(numbers,'0'));
%同理编写其余数字键、小数点键、小括号键、运算符号键;
3.2.1运算符号的回调函数
3.2.1数字键的回调函数
function pushbutton18_Callback(hObject, eventdata, handles) %数字键0的回调函数: %get函数获取输入文本框edit1的string属性,赋值给numbers,数值类型为char;
numbers=get(handles.edit1,'string');
点击界面上的按键,输入显示在input的文本对话框,结果显示在output对 话框。例如输入3*(3.1+4.9)/2,结果显示为12.0000000000。如上图所示 可见计算器已经具备简单的基本计算功能。
谢谢观看~
13812345678
YourName
绪论
随着MATLAB的逐渐发展,其功能已经不再限于最初繁琐的数学运算了,由 于技术的精进,软件的性能也越来越好,并且由于其操作简单、兼容性好的 特性,用途也越来越广泛。本文就将介绍一种基于MATLAB制作的简易的计 算器。通过MATLAB实现计算器一般可以采用两种方式:一是纯软件编译实 现;另外一种是结合MATLAB软件与GUI界面的方式。GUI 是 Graphical User Interface 的简称,即图形用户界面,通常人机交互图形化用户界面设计经常 读做“goo-ee”,准确来说 GUI 就是屏幕产品的视觉体验和互动操作部分。由 于采用GUI的方便快捷,所以本文介绍的就是在MATLAB中基于GUI的简易计 算器设计。

用基于MFC对话框编写的计算器

用基于MFC对话框编写的计算器

用基于MFC对话框编写的计算器1.用MFC建立一个基于对话框的应用程序;2.程序主代码:// CalculatorDlg.h : 头文件#pragma once#include"afxwin.h"// CCalculatorDlg 对话框class CCalculatorDlg : public CDialog{// 构造public:CCalculatorDlg(CWnd* pParent = NULL);// 标准构造函数// 对话框数据enum { IDD = IDD_CALCULATOR_DIALOG };int sign, decimal;double m_Num;double num1, num2; //操作数char cal; //运算符号BYTE dotflag; //小数点标志BYTE dotflag1;BYTE numflag; //键入数字标志long quan2; //小数部分权值char cnum[20];CString csnum;protected:virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持// 实现protected:HICON m_hIcon;// 生成的消息映射函数virtual BOOL OnInitDialog();afx_msg void OnSysCommand(UINT nID, LPARAM lParam);afx_msg void OnPaint();afx_msg HCURSOR OnQueryDragIcon(); DECLARE_MESSAGE_MAP()public:afx_msg void OnBnClickedButton1Num0();afx_msg void OnBnClickedButton2Num1();afx_msg void OnBnClickedButton3Num2();afx_msg void OnBnClickedButton4Num3();afx_msg void OnBnClickedButton5Num4();afx_msg void OnBnClickedButton6Num5();afx_msg void OnBnClickedButton7Num6();afx_msg void OnBnClickedButton8Num7();afx_msg void OnBnClickedButton9Num8();afx_msg void OnBnClickedButton10Num9();afx_msg void OnBnClickedPoint();afx_msg void OnBnClickedEqual();afx_msg void OnBnClickedAdd();afx_msg void OnBnClickedSub();afx_msg void OnBnClickedMul();afx_msg void OnBnClickedDiv();afx_msg void OnBnClickedButtonEmpty();afx_msg void OnEnChangeEdit1();CEdit m_CResult;};// CalculatorDlg.cpp : 实现文件//#include"stdafx.h"#include"Calculator.h"#include"CalculatorDlg.h"//#include "math.h"#ifdef_DEBUG#define new DEBUG_NEW#endif// 用于应用程序“关于”菜单项的CAboutDlg 对话框class CAboutDlg : public CDialog{public:CAboutDlg();// 对话框数据enum { IDD = IDD_ABOUTBOX };protected:virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持// 实现protected:DECLARE_MESSAGE_MAP()};CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD){}void CAboutDlg::DoDataExchange(CDataExchange* pDX){CDialog::DoDataExchange(pDX);}BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)END_MESSAGE_MAP()// CCalculatorDlg 对话框CCalculatorDlg::CCalculatorDlg(CWnd* pParent/*=NULL*/) : CDialog(CCalculatorDlg::IDD, pParent){m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME); }void CCalculatorDlg::DoDataExchange(CDataExchange* pDX) {CDialog::DoDataExchange(pDX);DDX_Control(pDX, IDC_EDIT1, m_CResult);}BEGIN_MESSAGE_MAP(CCalculatorDlg, CDialog) ON_WM_SYSCOMMAND()ON_WM_PAINT()ON_WM_QUERYDRAGICON()//}}AFX_MSG_MAPON_BN_CLICKED(IDC_BUTTON1_NUM0,&CCalculatorDlg::OnBnClickedButton1Num0) ON_BN_CLICKED(IDC_BUTTON2_NUM1,&CCalculatorDlg::OnBnClickedButton2Num1) ON_BN_CLICKED(IDC_BUTTON3_NUM2,&CCalculatorDlg::OnBnClickedButton3Num2) ON_BN_CLICKED(IDC_BUTTON4_NUM3,&CCalculatorDlg::OnBnClickedButton4Num3) ON_BN_CLICKED(IDC_BUTTON5_NUM4,&CCalculatorDlg::OnBnClickedButton5Num4) ON_BN_CLICKED(IDC_BUTTON6_NUM5,&CCalculatorDlg::OnBnClickedButton6Num5) ON_BN_CLICKED(IDC_BUTTON7_NUM6,&CCalculatorDlg::OnBnClickedButton7Num6)ON_BN_CLICKED(IDC_BUTTON8_NUM7, &CCalculatorDlg::OnBnClickedButton8Num7) ON_BN_CLICKED(IDC_BUTTON9_NUM8, &CCalculatorDlg::OnBnClickedButton9Num8) ON_BN_CLICKED(IDC_BUTTON10_NUM9, &CCalculatorDlg::OnBnClickedButton10Num9) ON_BN_CLICKED(IDC_POINT,&CCalculatorDlg::OnBnClickedPoint)ON_BN_CLICKED(IDC_EQUAL,&CCalculatorDlg::OnBnClickedEqual)ON_BN_CLICKED(IDC_ADD,&CCalculatorDlg::OnBnClickedAdd)ON_BN_CLICKED(IDC_SUB,&CCalculatorDlg::OnBnClickedSub)ON_BN_CLICKED(IDC_MUL,&CCalculatorDlg::OnBnClickedMul)ON_BN_CLICKED(IDC_DIV,&CCalculatorDlg::OnBnClickedDiv)ON_BN_CLICKED(IDC_BUTTON_EMPTY, &CCalculatorDlg::OnBnClickedButtonEmpty) ON_EN_CHANGE(IDC_EDIT1,&CCalculatorDlg::OnEnChangeEdit1)END_MESSAGE_MAP()// CCalculatorDlg 消息处理程序BOOL CCalculatorDlg::OnInitDialog(){CDialog::OnInitDialog();// 将“关于...”菜单项添加到系统菜单中。

基于对话框的程序设计_计算器编程

基于对话框的程序设计_计算器编程

基于对话框的程序设计——计算器编程一.总体介绍:(1)本计算器可以设置计算器的类型,通过单选按钮来实现在标准型计算器和科学型计算器之间的切换,在标准型计算器界面,可以实现一些基本功能,比如:加、减、乘、除、取负、平方、开方、取倒的八种基本运算;另外,还可以进行退格和清零的运算。

在科学型计算器界面,还可以实现一些高级功能,比如:取以e为底的指数、取自然对数、以10为底的指数、以10为底的对数、取正弦、取余弦、取正切、取立方、计算x的y次方、取n的阶乘的九种运算;而且还可以实现以角度或弧度的数据输入方式。

(2)本计算器包含菜单,一级菜单包括计算、文件,在一级菜单“计算”下设有标准型、科学型、工具的二级菜单,在一级菜单“文件”下设有关于、退出的二级菜单:在二级菜单“标准型”下设有三级菜单:加、减、乘、除、开方、取倒数,在二级菜单“科学型”下设有三级菜单:角度、弧度,在二级菜单“工具”下设有三级菜单:等于、退格、清零;最后,在三级菜单“角度”和三级菜单“弧度”下设有同样的四级菜单:取以e为底的指数、取自然对数、以10为底的指数、以10为底的对数、取正弦、取余弦、取正切、取立方、计算x的y次方、取n的阶乘。

二.使用方法:1.用户通过从计算器的0至9的按钮输入数据,可以通过Backspace(退格)按钮来清除最后输入的一位数字,可以通过C(清零)按钮来使计算器屏幕上的所有数字清零。

2.在标准型界面时,使用说明:用户先通过按钮输入数字,然后按下所需运算符号,再按下第二个数据,最后按下等于号,即可显示最终计算结果。

比如:计算4*15 的值,先按“4”,再按“*”,再按“5”,最后按“=”。

多个数字的运算方法通两个数字的运算。

3.在科学型计算器界面时,界面上还可以实现一些高级功能,比如:Exp(取以e为底的指数)、ln(取自然对数)、10^x(以10为底的指数)、log(以10为底的对数)、sin (取正弦)、cos(取余弦)、tan(取正切)、x^3(取立方)、x^y(计算x的y次方)、n!(取n的阶乘);另外,用户还可以在角度和弧度之间的切换,通过选择单选按钮来实现;数据输入具体操作方法同2。

最新《C++程序设计案例教程》习题答案窗口程序设计:简单计算器实验

最新《C++程序设计案例教程》习题答案窗口程序设计:简单计算器实验

窗口程序设计:简单计算器实验一、实验目的与要求模仿日常生活中所用的计算器,自行设计一个简单的计算器程序,要求能实现简单的计算功能:拥护单击界面上的按钮,输入数据和运算符等,在窗口中显示运算结果。

设计的基本要求是,能正确输入数据,能实现加、减、乘、除等算术运算,能进行简单三角运算,运算结果能正确显示,可以清除数据等。

程序运行效果如图1_1所示。

图1_1 简单计算器二、分析这是一个简单的对话框窗体设计,涉及Button,EditBox,Static Text, Radio Button,Group Box等控件,主要响应事件为BN_CLICKED(鼠标单击响应)。

三、实现步骤1.在Visual C++6.0中,选择Projects|MFC AppWizard(exe)命令,建立一个工程文件,文件名calculator.在step1中选择“Dialog based”(基于对话框),如图1_2所示。

其余步骤采用,默认项。

图1_2 选择应用程序类型2.在对话框中添加1个编辑框(Edit Box)、16个按钮(button)、1个静态文本(Static Text)、1个复选框(Group Box)、在Group Box中添加4个单选框(Radio Button).3.在设计按钮时,选择button单击右键,在它的属性()中修改其相应ID与Caption。

在添加4个单选框前,先添加组框,使4个单选框包围其中,并且选择第一个单选框设置它的属性(右键中的Properites),选中“group”复选框,此时表示被组框包围的单选框为同一组。

添加结果如图1_3所示。

注意:设计对话框时,ID的命名必须用合法的标识符,一般以ID开头,并且是大写,添加各种控件时用工具栏,工具栏的调出方法,Tools|customize|Toobars|Controls命令。

控件ID是重要的事件响应所需的唯一标识,命名应有一定规律。

4.分别修改各控件的显示属性与ID,并选择各控件的单击鼠标事件。

开发一个简单计算器程序-基于对话框

开发一个简单计算器程序-基于对话框

开发一个简单计算器程序-基于对话框开发一个简单科学计算器(基于对话框模式的应用程序)一. 开发目标及软件功能开发一个科学计算器程序,要求采用基于对话框模式的应用程序,至少具有加、减、乘、除四个基本功能,并在此基础上扩展平方、开方、三角函数等功能。

(1)仔细阅读操作过程,学习如何根据编译信息,定位语法错误。

(2)将警告与错误一律看作是错误。

(3)学习并模仿书上的程序书写风格。

二. 编程步骤1. 启动Visual C++,选择File | new 菜单项,弹出New 对话框。

单击Projects 选项卡,项目类型选择MFC AppWizard(exe),在Project name中填入工程名,在Location中填用户子目录路径(设置用户程序子目录的目的是,将所有编程时产生的中间文件和最终执行程序文件全部放在自己的目录中,以便管理)。

2. 在程序向导的第1步选择建立一个基于对话框(Dialog based)的应用程序,点击“Finish”结束向导。

3. 在对话框上添加各类控件,设计对话框的界面如图所示。

在对话框中右键点击,弹出属性设置对话框(Dialog Properties),标题(caption)中填入“迷你计算器”;其余各控件的参数设置如下表所示。

4. “Member Variables”标签项,为对话框中的三个编辑框控件添加对应的成员变量如图所示。

添加成员变量的步骤为:选中“IDC_FIRST”,点击“Add Viarable”,在弹出的对话框中,指定成员变量名为“m_first”,分类为“Value”,变量类型为“double”,点击“OK”确定。

其余依此类推。

5. 为运算符按钮添加相应的消息映射函数:点击菜单“View →ClassWizard”,选中“Message Maps”标签,目标ID号中选择“IDC_ADD”,在“Messages”中选择“BN_CLICKED”,双击,弹出“添加成员函数”对话框,默认函数名为“OnAdd”,点击“OK”。

基于对话框的程序设计——计算器编程PPT课件

基于对话框的程序设计——计算器编程PPT课件

CRect StandardRc;
//StandardRc表示标准型的范围
Operator m_operator;
//运算符标志
Func m_func;
//函数标志
CalcError m_errorState; //错误标志
BOOL m_bOperandAvail; //输入标志,输入为真
void ExpandToSentific(); //扩展成科学性计算器
i-=1;
}
}
UpdateData(FALSE);
}
.
7
4.在头文件Ccalc.h中添加消息响应代码:afx_msg
void OnOperandInput(UINT nID);
• 在实现文件Ccalc.cpp中添 加如下代码:
• ON_COMMAND_RANGE(ID C_0,IDC_9,OnOperandInput )
else m_accum /= m_operand; OpAdd) m_accum += m_operand;
else if(m_operator ==
else if(m_operator == OpSubtract) m_accum -= m_operand;
else if(m_operator == OpCm) m_accum=pow(m_accum,m_operand);
比如本程序中在定义枚举类型后在四则运算等号小数点开方去反倒数清零按钮的消息映射函数使用了定义的枚举类型中的常数在指数科学计数余弦函数正弦函数自然对数底数为10的对数正切函数阶乘的函数实现中也用到了枚举类型定义的变量的值而相关变量也只能使用所定义的常数
基于对话框的程序设计
——计算器编程
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

JZ_P 8
三、设计步骤-3
3.
菜单编辑窗口
鼠标右键 添加菜单资源
编辑菜单资源
在资源视图中添加新 菜单(ID_MENU) 在菜单编辑窗口,编 辑菜单项(扩展, ID_Extend)(如 右图)。 控件资源设计清单如 附表1。 利用控件工具箱,在 对话框编辑窗口设计 控件,并修改控件的 相关属性(属性窗口)
附加图
图1:添加类
图2:MFC类向导
JZ_P 11
三、设计步骤-4
4.
鼠标双击此处: AdvButton.h
编辑高级按钮控件类
新类CAdvButton的头 文件AdvButton.h中预 定义的几种颜色如右图。
需 要 添 加 的 代 码
//预定义高级按钮控件的颜色 #define DisableColor RGB(128,128,128)//灰色,按钮不可用 #define FocusColor RGB(255,0,0)//红色,按钮焦点 #define SelectColor RGB(0,255,0)//绿色,按钮被按下 #define DefaultColor RGB(0,0,255)//兰色,默认 #define MAXCAPTIONLEN 8//最大的按钮显示的字符数目
添加消息映射函数,如下表
消息码
WM_PAINT
函数名
OnPain()
功能 响应窗口重绘的消息
代码 附录9
附录9
JZ_P 18
三、设计步骤-6
6.
为主对话框类 功能
CCalculatorDlg设置界面
添加成员变量,如下: (方法同 上)
public: // 对话框菜单按钮 CMenu *m_Menu; //"扩展"菜单项标志位 bool m_IsExtend;
资源视图
菜单项:扩展,ID_Extend
菜单属性窗口
JZ_P 9
三、设计步骤-4
3.
代码编辑窗口
鼠标右键 添加类 CAdvButton
创建高级按钮控件类
在类视图中添加新类 (CAdvButton) 添加类视图见下页图1 MFC类向导视图见下页 图2
类视图
新类CAdvButton属性窗口
JZ_P 10
JZ_P 5
三、设计步骤-1
1.
注意点
创建项目
向导建立项目:在“MFC应 用程序向导”对话框(如右 图)注意选择注意点。 确认选择修改完全正确之 后,点击“完成”按钮。 进入下一步……
JZ_P 6
三、设计步骤-2
2.
控件工具箱
对话框ID
对话框设计
编辑对话框以及控 件资源(如右图)。 控件资源设计清单 如附表1。 利用控件工具箱, 在对话框编辑窗口 设计控件,并修改 控件的相关属性 (属性窗口)
JZ_P 12
三、设计步骤-4
4.
鼠标右键单击添加变量
编辑高级按钮控件类
为新类CAdvButton添加5 个成员变量,如右图。 添加成员变量向导见下页附图。
添加成员变量的结果代码 public: // 用来保存按钮的客户矩形区域 CRect m_ClientRect; // 用来保存按钮的客户区域,非矩形 CRgn m_ClientRgn; // 标识计时器是否已经打开 bool m_IsTimerOn; // 按钮所处状态 UINT m_State; // 当前鼠标位置 CPoint m_Point;
在类CAdvButton的构造函数实现对成员变量的初始化。(以下红色代码)
m_ClientRgn.DeleteObject();//删除区域对象 m_ClientRgn.CreateEllipticRgnIndirect(&m_ClientRect);//创建椭圆区域 }
JZ_P 15
添加消息映射函数
基于对话框的程序设计
案例1: 计算器设计
1
JZ_P 2
一、计算器的设计需求
类似windows附件中自带的计算器
实现简单的四则运算功能和高级的科学计算功 能 界面设计要求简洁大方:
菜单栏 实现用户显示输入输出的编辑框 功能按钮,要求具有对鼠标敏感的功能(即鼠标 处于不同的位置和状态时,按钮控件会显示不同 的颜色,并且所有按钮控件的客户区域为椭圆或 圆形)
添加成员变量,如下:
// 编辑框文本 CString m_Caption;
添加成员函数,如下: (如右图,与添加变量的界面类似)
public:
// 绘制编辑控件客户区 void OnDraw(void);(附录7) // 设置编辑控件显示文本 void OnDisplay(LPCTSTR lpszStr); (附录8)
重定义虚函数表
虚函数名
DrawItem() PreSubclassWindow()
功能 实现按钮控件的可见部分的重绘功能 窗口创建之前,设置窗口的属性
代码 附录5 附录6
附录5 附录6
JZ_P 17
鼠标右键添加函数
三、设计步骤-5
5.
创建和编辑高级按钮控件类 CAdvEdit
创建方法与第3步设计相同 编辑方法与第4步设计相同
附录13
JZ_P 22
附表3:对话框控件所对应的响应函数清单
OnCtlColor() 改变对话框和控件的颜色
附录10
附录11
附录12
JZ_P 21
三、设计步骤-5
7.
为主对话框类CCalculatorDlg添加成员函数
在stdafx.h中添加包含语句:#include <math.h> 添加1个成员函数如下表。 添加28个控件单击响应函数如附表3。
函数名 Result() 功能 实现计算功能 代码 附录13
对话框编辑窗口 属性窗口
JZ_P 7
附表1:对话框控件资源设计清单
控件caption 0 1 2 3 4 5 6 7 8 9 . = + * / 控件ID BTN_0 BTN_1 BTN_2 BTN_3 BTN_4 BTN_5 BTN_6 BTN_7 BTN_8 BTN_9 BTN_10 BTN_11 BTN_12 BTN_13 BTN_14 BTN_15 功能说明 按钮0 按钮1 按钮2 按钮3 按钮4 按钮5 按钮6 按钮7 按钮8 按钮9 按钮小数点 按钮=,求值 按钮+ 按钮按钮* 按钮/ 7 1 2 3 4 代码号 控件caption 清屏 sqrt 1/x sin cos tan X^2 X^3 X^y exp ln log 示例编辑框 静态组框控件1 静态组框控件2 静态组框控件3 控件ID BTN_16 BTN_17 BTN_18 BTN_19 BTN_20 BTN_21 BTN_22 BTN_23 BTN_24 BTN_25 BTN_26 BTN_27 IDC_DSPEDIT IDC_DSPSTATIC IDC_STATIC IDC_STATIC 清屏 按钮开方 按钮求倒数 按钮sin 按钮cos 按钮tan 按钮x的平方 按钮x的立方 按钮x的y次幂 按钮e为底的幂 按钮e为底的对数 求对数log 显示I/O数据 界面分割(编辑框) 界面分割(通用计算) 界面分割(高级计算) 5 6 8 9 10 11 12 13 14 15 16 功能说明 代码号
JZ_P 20
三、设计步骤-5
6.
为主对话框类CCalculatorDlg设置界面功能
添加3个消息映射函数见下表。 添加1个菜单命令消息映射函数如下表。 添加1个成员函数如下表
消息码 WM_CREATE WM_CTRCOLOR WM_PAINT 菜单ID ID_Extend 函数名 OnCreate() OnPain() 函数名 OnExtend() 函数名 Extend() 功能 设置对话框初始化 响应窗口重绘的消息 功能 响应菜单项,以切换通用和扩展计算 器界面 功能 显示计数器扩展界面 代码 附录11 代码 附录12 代码 附录10
JZ_P 3
二、设计重点
为对话框添加菜单 定制感激按钮控件,该按钮具有不规则的 形状,可以根据用户鼠标的位置和单击状 态的不同,显示不同的颜色 定制高级编辑控件,该编辑控件可以指定 文本文字的字体和颜色 实现对话框的扩展功能
JZ_P 4
三、设计步骤-1
1.
注意点
创建项目
新建项目:执行Visual 2003,选择 菜单项命令(Fiele>New->项目),弹出对 话框如右图;有选择的修改 注意点。 确认选择修改完全正确之 后,点击“确定”按钮。 进入下一步……
Hale Waihona Puke 功能 响应鼠标左键按下的消息 响应鼠标左键弹起的消息 响应鼠标移动的消息 响应计时器到达的消息
代码 附录1 附录2 附录3 附录4
附录1 附录2 附录3 附录4
JZ_P 16
重定义虚函数
三、设计步骤-4
4.
编辑高级按钮控件类
为新类CAdvButton重 定义虚函数,如右图。 重定义的虚函数见下表。
添加控件成员变量,如下页附表2: (见右图)
注意点:需要修改
JZ_P 19
附表2:对话框控件资源设计清单
按钮 0 1 2 3 4 5 6 7 8 9 . = + * / 控件ID BTN_0 BTN_1 BTN_2 BTN_3 BTN_4 BTN_5 BTN_6 BTN_7 BTN_8 BTN_9 BTN_10 BTN_11 BTN_12 BTN_13 BTN_14 BTN_15 控件类型 CAdvButton CAdvButton CAdvButton CAdvButton CAdvButton CAdvButton CAdvButton CAdvButton CAdvButton CAdvButton CAdvButton CAdvButton CAdvButton CAdvButton CAdvButton CAdvButton 控件对应成员变量 m_AdvButton0 m_AdvButton1 m_AdvButton2 m_AdvButton3 m_AdvButton4 m_AdvButton5 m_AdvButton6 m_AdvButton7 m_AdvButton8 m_AdvButton9 m_AdvButtonPoint m_AdvButtonEqu m_AdvButtonAdd m_AdvButtonSub m_AdvButtonMul m_AdvButtonDiv 按钮 清屏 sqrt 1/x sin cos tan X^2 X^3 X^y exp ln log 示例编辑框 静态组框1 控件ID BTN_16 BTN_17 BTN_18 BTN_19 BTN_20 BTN_21 BTN_22 BTN_23 BTN_24 BTN_25 BTN_26 BTN_27 IDC_DSPEDIT IDC_DSPSTATIC 控件类型 CAdvButton CAdvButton CAdvButton CAdvButton CAdvButton CAdvButton CAdvButton CAdvButton CAdvButton CAdvButton CAdvButton CAdvButton CAdvEdit CButton 控件对应成员变量 m_AdvButtonClear m_AdvButtonSqrt m_AdvButtonReverse m_AdvButtonSin m_AdvButtonCos m_AdvButtontan m_AdvButtonSqu m_AdvButtonCub m_AdvButtonPow m_AdvButtonExp m_AdvButtonLn m_AdvButtonLog m_DspEdit m_DspStatic
相关文档
最新文档