窗口Z轴顺序--MFC

窗口Z轴顺序--MFC
窗口Z轴顺序--MFC

CWnd::SetWindowPos

BOOL SetWindowPos( const CWnd* pWndInsertAfter, int x, int y, int cx , int cy,UINT nFlags );

返回值如果函数成功,则返回非零值;否则返回0。

参数pWndInsertAfter标识了在Z轴次序上位于这个CWnd对象之前的CWnd对象。这个参数可以是指向CWnd对象的指针,也可以是指向下列值的指针:l wndBottom 将窗口放在Z轴次序的底部。如果这个CWnd是一个顶层窗口,则窗口将失去它的顶层状态;系统将这个窗口放在其它所有窗口的底部。

wndTop 将窗口放在Z轴次序的顶部。

wndTopMost 将窗口放在所有非顶层窗口的上面。这个窗口将保持它的顶层位置,即使它失去了活动状态。

wndNoTopMost 将窗口重新定位到所有非顶层窗口的顶部(这意味着在所有的顶层窗口之下)。这个标志对那些已经是非顶层窗口的窗口没有作用。有关这个函数以及这些参数的使用规则参见说明部分。x指定了窗口左边的新位置。y指定了窗口顶部的新位置。cx指定了窗口的新宽度。cy指定了窗口的新高度。nFlags指定了大小和位置选项。这个参数可以是下列值的组合:l SWP_DRA WFRAME 围绕窗口画出边框(在创建窗口的时候定义)。l SWP_FRAMECHANGED 向窗口发送一条WM_NCCALCSIZE消息,即使窗口的大小不会改变。如果没有指定这个标志,则仅当窗口的大小发生变化时才发送WM_NCCALCSIZE消息。l SWP_HIDEWINDOW 隐藏窗口。SWP_NOACTIV A TE 不激活窗口。如果没有设置这个标志,则窗口将被激活并移动到顶层或非顶层窗口组(依赖于pWndInsertAfter参数的设置)的顶部。l SWP_NOCOPYBITS 废弃这个客户区的内容。如果没有指定这个参数,则客户区的有效内容将被保存,并在窗口的大小或位置改变以后被拷贝回客户区。l SWP_NOMOVE 保持当前的位置(忽略x和y参数)。l SWP_NOOWNERZORDER 不改变拥有者窗口在Z轴次序上的位置。l SWP_NOREDRA W 不重画变化。如果设置了这个标志,则不发生任何种类的变化。这适用于客户区、非客户区(包括标题和滚动条)以及被移动窗口覆盖的父窗口的任何部分。当这个标志被设置的时候,应用程序必须明确地无效或重画要重画的窗口和父窗口的任何部分。l SWP_NOREPOSITION 与SWP_NOOWNERZORDER相同。l SWP_NOSENDCHANGING 防止窗口接收WM_WINDOWPOSCHANGING消息。l SWP_NOSIZE 保持当前的大小(忽略cx和cy参数)。l SWP_NOZORDER 保持当前的次序(忽略pWndInsertAfter)。l SWP_SHOWWINDOW 显示窗口。

调用这个成员函数以改变子窗口、弹出窗口和顶层窗口的大小、位置和Z轴次序。窗口在屏幕上按照它们的Z轴次序排序。在Z轴次序上处于顶端的窗口将程序在所有其它窗口的顶部。子窗口的所有坐标都是客户坐标(相对于父窗口客户区的左上角)。窗口可以被移动到Z轴次序的顶部,既可以通过将pWndInsertAfter参数设为&wndTopMost,并确保没有设置SWP_NOZORDER标志,也可以通过设置窗口的Z轴次序使它位于所有现存的顶层窗口上方。当一个非顶层窗口被设为顶层窗口时,它拥有的窗口也被设为顶层的。它的拥有者不发生变化。如果顶层窗口被重新定位到Z轴次序的底部(&wndBottom)或任何非顶层窗口之后,则它将不再是顶层窗口。当顶层窗口被变为非顶层窗口时,它所有的拥有者和它拥有的所有窗口都被变为非顶层窗口。如果既没有指定SWP_NOACTIVE标志也没有指定

SWP_NOZORDER标志(这意味着应用程序要求窗口被同时激活并放入指定的Z轴次序),则pWndInsertAfter参数中指定的值将只在下列环境下适用:l 在pWndInsertAfter参数中既没有指定&wndTopMost也没有指定&wndNoTopMost。

这个窗口不是活动窗口。应用程序不能激活一个非活动窗口但同时又不把它带到Z轴次序的顶部。应用程序可以没有任何限制地改变活动窗口的Z轴次序。非顶层窗口可能拥有一个顶层窗口,但是反之则不成立。任何被顶层窗口拥有的窗口(例如对话框)都将自己变为顶层窗口,以确保所有被拥有的窗口位于它们的拥有者上方。在Windows 3.1或更新的版本中,可以将窗口移动到Z轴次序的顶部,并通过设置它们的WS_EX_TOPMOST风格而将之锁定在那里。这种顶层窗口即使在失去活动状态以后也会保持顶层位置。例如,选择WinHelp的Always On Top命令会使帮助窗口变为顶层,并且在你返回应用程序之后它还保持可见。要创建一个顶层窗口,应在调用SetWindowPos的时候将pWndInsertAfter参数设为&wndTopMost,或者在创建窗口的时候设置WS_EX_TOPMOST风格。如果Z轴次序中包含了任何具有WS_EX_TOPMOST风格的窗口,则用&wndTopMost移动的窗口将被放到所有非顶层窗口的顶部,但是位于任何顶层窗口的下面。当应用程序激活一个不具有WS_EX_TOPMOST风格的非活动窗口时,该窗口将被移动到所有非顶层窗口的上方,但是位于所有顶层窗口的下方。如果在调用SetWindowPos的时候pWndInsertAfter参数被设为&wndBottom,并且CWnd是一个顶层窗口,则该窗口失去顶层状态(WS_EX_BOTTOM风格被清除),并且系统将窗口放在Z轴次序的底部。

VCmfc编计算器源代码

用C++编写计算器程序 搞要本课程设计是在基于对话框的应用程序中模拟一个计算器,本计算器可以进行十进制下的四则运算(加、减、乘、除)和四则混合运算,可以把十进制转化为二进制或十六进制,可以进行一些常用的函数运算(比如sin、cos、tan、cot、sqrt、ln等),还可以支持带“(”,“)”符号的表达式的计算。系统开发平台为Windows XP,程序设计设计语言采用Visual C++6.0,程序运行平台为Windows 98/2000/XP。程序通过调试运行,初步实现了设计目标。 关键词程序设计;计算器;C++; 1 引言 在现代社会中,计算器已经进入了每一个家庭,人们在生活和学习中经常需要使用到计算器,它的出现大大减少了人们在计算方面的工作量,可以说它在人们生活和学习中是不可缺少的。 1.1C++介绍 C++语言的主要特点表现在两个方面,一是全面兼容C语言,二是支持面向对象的程序设计方法[1]。 (1) C++是一个更好的C,它保持了C语言的优点,大多数的C程序代码略作修改或不作修改就可在C++的集成环境下调试和运行。这对于继承和开发当前已在广泛的软件是非常重要的,可以节省大量的人力和物力。 (2) C++是一种面向对象的程序设计语言它使得程序的各个模块的独立性更强,程序的可读性和可移植性更强,程序代码的结构更加合理,程序的扩充性更强。这对于设计、编制和调试一些大型的软件尤为重要。 (3) C++集成环境不仅支持C++程序的编译和调试,而且也支持C程序的编译和调试。

通常,C++程序环境约定:当源程序文件的扩展名为c.时,则为C程序;而当源程序文件的扩展名为cpp.时,则为C++程序。 (4) C++语句非常简练,对语法限制比较宽松,因此C++语法非常灵活。其优点是给用户编程带来书写上的方便。其缺点是由于编译时对语法限制比较宽松,许多逻辑上的错误不容易发现,给用户编程增加了难度。 1.2计算器的介绍 (1)在运行程序后,系统会弹出一个基于对话框的计算器界面,如下图所示: 图1.1 计算器界面 (2)在计算器程序中,主要通过一个编辑框来获取表达式和显示计算结果,表达式可以通过键盘和单击按钮2种方式输入,输入后的结果如下图所示:

c面向对象程序设计MFC简单计算器实验报告

计算机与信息工程学院 《程序设计基础》课程设计报告 题目名称:60.编写一个能实现简单功能的计算器学生姓名:刘沛东 学生学号:2011508154 专业班级:电子信息工程(1)班 指导教师:高攀

1 课程设计的题目 编写一个能实现简单功能的计算器 2 题目要求 1. 有一个计算器图形。 2. 能实现加、减、乘、除及乘方的运算。 3. 当输入题目时,屏幕上要在指定位置上显示出相应的题目内容,且相应的数字键要改变颜色 例如:输入数字1 时,在计算器图形上的1键变为红色。 4. 屏幕、图形颜色、形状自定 3 总体设计 3.1 总体框架 图1 系统框架

3.2 系统功能说明 在VC++6.0中绘制计算器界面,各控件的设置 对0~9控件设定相应的ID和其他属性: 图2 “1”控件设置 对“+、-、*、\”控件设定相应的ID和其他属性: 图2 “+”控件设置 对其它控件设定相应的ID和其他属性: 图3 其它控件设置

主要使用到Layout菜单中的Align功能对各个按钮进行对其,使界面更加整洁。拖出的控件有上面的一个Edit控件用于显示数字,Button控件用于处理鼠标的消息。 4 程序详细设计 4.1系统主调模块 图5 程序流程图

4.2各模块详细设计 4.2.1 建立的变量,控件的命名,对应的消息处理函数对应表 double poz; //保存小数点的位置,初始化为1,表示poz-1个小数点。 double m_Dis; //Edit控件上需要显示的数字 BOOL point_flag; //小数点表示位,判定是否是小数,是小数为1,不是小数为0。 double numfirst; //保存计算过程中的前一个数字, double numsecond;//保存计算过程中的第二个数字 char op;//记录当前的计算符号,可以为’+’,’-’,’*’,’/’,’=’,’c’,’n’ 变量初始化: poz=1; m_Dis = 0.0; numfirst=0; numsecond=0; op=0;

用MFC编写的计算器程序源代码

// JiSuanQiDlg.cpp : 实害?现?文?件t // #include"stdafx.h" #include"JiSuanQi.h" #include"JiSuanQiDlg.h" #include"afxdialogex.h" #ifdef _DEBUG #define new DEBUG_NEW #endif // 用?于 ?应畖用?程ì序?“°关?于 ?”±菜?单蹋?项?的? CAboutDlg 对?话°框? class CAboutDlg : public CDialogEx { public: CAboutDlg(); // 对?话°框?数簓据Y enum { IDD = IDD_ABOUTBOX }; protected: virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支§持? // 实害?现? protected: DECLARE_MESSAGE_MAP() }; CAboutDlg::CAboutDlg() : CDialogEx(CAboutDlg::IDD) { } void CAboutDlg::DoDataExchange(CDataExchange* pDX) { CDialogEx::DoDataExchange(pDX); } BEGIN_MESSAGE_MAP(CAboutDlg, CDialogEx) END_MESSAGE_MAP()

// CJiSuanQiDlg 对?话°框? CJiSuanQiDlg::CJiSuanQiDlg(CWnd* pParent /*=NULL*/) : CDialogEx(CJiSuanQiDlg::IDD, pParent) , m_num(0) , m_1(0) , m_2(_T("")) , m_two(0) { m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME); } void CJiSuanQiDlg::DoDataExchange(CDataExchange* pDX) { CDialogEx::DoDataExchange(pDX); DDX_Text(pDX, IDC_EDIT1, m_num); DDX_Text(pDX, IDC_EDIT2, m_1); DDX_Text(pDX, IDC_EDIT3, m_2); DDX_Text(pDX, IDC_EDIT4, m_two); } BEGIN_MESSAGE_MAP(CJiSuanQiDlg, CDialogEx) ON_WM_SYSCOMMAND() ON_WM_PAINT() ON_WM_QUERYDRAGICON() ON_BN_CLICKED(IDC_BUTTON2, &CJiSuanQiDlg::OnBnClickedButton2) ON_BN_CLICKED(IDC_BUTTON1, &CJiSuanQiDlg::OnBnClickedButton1) ON_BN_CLICKED(IDC_BUTTON3, &CJiSuanQiDlg::OnBnClickedButton3) ON_BN_CLICKED(IDC_BUTTON4, &CJiSuanQiDlg::OnBnClickedButton4) ON_BN_CLICKED(IDC_BUTTON5, &CJiSuanQiDlg::OnBnClickedButton5) ON_BN_CLICKED(IDC_BUTTON6, &CJiSuanQiDlg::OnBnClickedButton6) ON_BN_CLICKED(IDC_BUTTON7, &CJiSuanQiDlg::OnBnClickedButton7) ON_BN_CLICKED(IDC_BUTTON8, &CJiSuanQiDlg::OnBnClickedButton8) ON_BN_CLICKED(IDC_BUTTON9, &CJiSuanQiDlg::OnBnClickedButton9) ON_BN_CLICKED(IDC_BUTTON10, &CJiSuanQiDlg::OnBnClickedButton10) ON_BN_CLICKED(IDC_BUTTON11, &CJiSuanQiDlg::OnBnClickedButton11) ON_BN_CLICKED(IDC_BUTTON13, &CJiSuanQiDlg::OnBnClickedButton13) ON_BN_CLICKED(IDC_BUTTON14, &CJiSuanQiDlg::OnBnClickedButton14) ON_BN_CLICKED(IDC_BUTTON15, &CJiSuanQiDlg::OnBnClickedButton15) ON_BN_CLICKED(IDC_BUTTON16, &CJiSuanQiDlg::OnBnClickedButton16) ON_BN_CLICKED(IDC_BUTTON12, &CJiSuanQiDlg::OnBnClickedButton12)

MFC简单计算器设计正文

实用计算器程序1.基本功能描述 计算器是人们日常生活中非常实用的计算工具。预期设计目标与实际计算器为标准,Windows10系统提供的计算器为范例进行设计。 实用计算器要实现单目运算和双目运算。单目运算主要包括阶乘、正弦、余弦; 双目运算主要包括加、减、乘、除、乘幂等。计算器要能够对输入的各种数据进行处理,包括小数、整数、负数等数据进行操作。实际过程中要能够对不同的数据灵活判 断执行。同时要能够对不满足运算符的操作数,提示出错信息以方便用户进行处理。 用户的修改包括清屏和退格。程序设计的重点和难点在于:第一,能够对于不同的操 作数和操作符进行连续运算,运算过程中要有优先级的判断,根据优先级执行不同的 运算顺序;第二,能够用一个编辑框实现运算表达式的显示和结果的输出。 编程环境采用VisualStudio2017提供的MFC建立对话框应用程序,设计界面要简 单大方,并提供程序所有功能的接口。 2.设计思路 表1操作符优先级设计 优先级操作符 1 阶乘、正弦、余弦 2 乘幂 3 乘、除 4 加、减 对对话框编辑框关联一个变量从中读取数据,按下数字键时对数据数组num[]进行更新,其中num[0]表示的是当前已经存储变量的个数。由于算法设计为四层优先级, 且单目运算的优先级最高。当按下相应单目运算符,首先将当前数据数组的最后一个 存储(防止按下Backspace退格发生错误),并将此位数据执行运算后重新赋值。但按下双目运算符相应按键后,将计数num[0]++,同时将运算符的类型和位置记录。当按下等于之前,这样就将一个单目双目混合的运算表达式转化为双目运算。如果没有按 下等号键,则继续执行循环。在按下等号按钮之后,按照先乘幂、再乘除、后加减的 运算顺序执行运算,将最后结果保存并显示。(在实际的计算器中,执行完运算之后,按下运算符的操作键,最终结果将按照左操作数的形式出现,故需要保存变量。)如果用户没有结束程序,在运行初始化程序,进行下一次运算,否则直接退出。 图1程序流程图 3.软件设计 设计步骤 1)创建基于对话框的程序 利用AppWizard建立应用程序框架,创建一个基于对话框的MFC工程,命名为“fengwanjincalculator”,如图2所示。在图3显示的应用程序类型中选择基于对话框。创建成功后,系统自动生成相应程序文件。 图2创建MFC工程图 图3应用程序类型选择图

MFC简单计算器

信息科学与技术学院 《程序设计基础》课程设计报告 题目名称:60.编写一个能实现简单功能的计算器学生姓名:李海东 学生学号:2011508154 专业班级:电子信息工程(1)班 指导教师:高攀

1

1 课程设计的题目 编写一个能实现简单功能的计算器 2 题目要求 1. 有一个计算器图形。 2. 能实现加、减、乘、除及乘方的运算。 3. 当输入题目时,屏幕上要在指定位置上显示出相应的题目内容,且相应的数字键要改变颜色 例如:输入数字1 时,在计算器图形上的1键变为红色。 4. 屏幕、图形颜色、形状自定 3 总体设计 3.1 总体框架 图1 系统框架 开始 结束 键入第一个按钮 键入第二个按钮 显 示 结 果 加 法 减 法 乘 法 除 法 乘 方 清 零

3.2 系统功能说明 在VC++6.0中绘制计算器界面,各控件的设置 对0~9控件设定相应的ID和其他属性: 图2 “1”控件设置 对“+、-、*、\”控件设定相应的ID和其他属性: 图2 “+”控件设置 对其它控件设定相应的ID和其他属性: 图3 其它控件设置 1

2 主要使用到Layout 菜单中的Align 功能对各个按钮进行对其,使界面更加整洁。拖出的控件有上面的一个Edit 控件用于显示数字,Button 控件用于处理鼠标的消息。 4 程序详细设计 4.1系统主调模块 图5 程序流程图 实现文件.cpp 显示计算器界面 开始执行 工程全局对象 资源文件.rc 模块定义文件.def 头文件.h 执行_twinmain() Afxmain() 创建窗口 实现窗口类注册 Set window V oid clc::onpaint() V oid cal::onCE() 点击鼠标发出消息 V oid clce::onmouse() 等待消息处理 V oid clc::onMum0() V oid clc::onAdd() 文本框中显示结果 程序运行结

我的MFC计算器程序

江苏师范大学城环学院 《面向对象的程序设计》课程设计 设计题目:简易计算器设计 姓名:朱立珍 学号:12253013 院系:城市与环境学院 年级: 12城31 指导教师:李保杰 江苏师范大学城环学院

《面向对象的程序设计》课程设计任务书 课程名称c++面向对象课程设计 设计题目计算器设计 指导教师李保杰时间2014.12.24-2015.1.5 一、教学要求 1. 巩固和加深学生对c++面向对象课程的基本知识的理解和掌握 2. 掌握c++面向对象编程和程序调试的基本技能 3. 利用c++面向对象进行基本的软件设计 4. 掌握书写程序设计说明文档的能力 5. 提高运用c++面向对象解决实际问题的能力 二、设计资料及参数 每个学生在教师提供的课程设计题目中任意选择一题,独立完成,题目选定后不可更换。 计算器系统设计 对计算器系统进行如下设计使之能提供下列服务: 加法运算 减法运算 乘法运算 除法运算 立即显示运算结果 三、设计要求及成果 1. 分析课程设计题目的功能需求(可选用数组或链表实现) 2. 写出详细设计说明(至少包括功能实现分析和模块流程图) 3. 编写程序代码,调试程序使其能正确运行(代码书写要规范,标示符要见名知意,要有必要的注释至少200行代码,不包括注释和花括号) 4. 设计完成的软件要便于操作和使用 5. 设计完成后提交课程设计报告(请严格按照模板进行排版) 四、进度安排 第一天选择课程设计题目,分析课题的要求 第二-六天编程 第七-八天编程及调试 第九天写编程报告 第十天提交课程设计报告与源程序(打印稿及电子稿) 五、评分标准 1. 根据平时上机考勤、表现和进度,教师将每天点名和检查 2. 根据课程设计完成情况,必须有可运行的软件。 3. 根据课程设计报告的质量,如有雷同,则所有雷同的所有人均判为不及格。 六、建议参考资料 《C++面向对象程序设计》清华大学出版社

MFC计算器主要代码(C)

// Calculator_17483Dlg.cpp : implementation file // #include"stdafx.h" #include"Calculator_17483.h" #include"Calculator_17483Dlg.h" #include"afxdialogex.h" #ifdef _DEBUG #define new DEBUG_NEW #endif // CAboutDlg dialog used for App About class CAboutDlg : public CDialogEx { public: CAboutDlg(); // Dialog Data enum { IDD = IDD_ABOUTBOX }; protected: virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support // Implementation protected: DECLARE_MESSAGE_MAP() }; CAboutDlg::CAboutDlg() : CDialogEx(CAboutDlg::IDD) { }

void CAboutDlg::DoDataExchange(CDataExchange* pDX) { CDialogEx::DoDataExchange(pDX); } BEGIN_MESSAGE_MAP(CAboutDlg, CDialogEx) END_MESSAGE_MAP() // CCalculator_17483Dlg dialog CCalculator_17483Dlg::CCalculator_17483Dlg(CWnd* pParent /*=NULL*/) : CDialogEx(CCalculator_17483Dlg::IDD, pParent) { num1=0; num2=0; operation=0; point=0; nump_1=0; nump_2=0; m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME); } void CCalculator_17483Dlg::DoDataExchange(CDataExchange* pDX) { CDialogEx::DoDataExchange(pDX); } BEGIN_MESSAGE_MAP(CCalculator_17483Dlg, CDialogEx) ON_WM_SYSCOMMAND() ON_WM_PAINT() ON_WM_QUERYDRAGICON()

MFC计算器课程设计报告

MFC计算器课程设计报告计算机应用3班黄锦湫,罗洁,饶益 指导老师:蒋鹏 2009.3.15

一.题目:利用MFC框架编写简易计算器 要求使用MFC框架在Visual Studio 6.0环境下编写一个简易的计算器,支持任意位数的 加减乘数,正负转换,并且实现BackSpace CE C功能。 二.设计过程 1.Windows消息处理机制的理解 首先编写程序需要对Windows程序的消息处理机制(Message Handle)有个比较清晰的了解。 Windows的程序都是通过消息来传送数据,有不需要用户参与的系统消息,比如异常处理等。还有用户消息,比如鼠标的单击,双击,键盘的键入等。 2.界面的设计 仿照Windows附件里面的计算器,在资源视图中画好界面,如图: 主要使用到Layout菜单中的Align功能对各个按钮进行对其,使界面更加整洁。拖出 的控件有上面的一个Edit控件用于显示数字,Button控件用于处理鼠标的消息。 3.

变量定义: double poz; //保存小数点的位置,初始化为1,表示poz-1个小数点。 double m_Dis; //Edit控件上需要显示的数字 BOOL point_flag; //小数点表示位,判定是否是小数,是小数为1,不是小数为0。 double numfirst; //保存计算过程中的前一个数字, double numsecond;//保存计算过程中的第二个数字 char op;//记录当前的计算符号,可以为’+’,’-’,’*’,’/’,’=’,’c’,’n’ 变量初始化: poz=1; m_Dis = 0.0; numfirst=0; numsecond=0; op=0; 4.设计思路 a)首先考虑对所有按键分为两类,数字类和符号类,0,1,2,3,4,5,6,7,8,9为数字类,+, -,*,/,=为符号类。数字在计算的过程中最多需要保存两个,所以定义了两个double 型变量numfirst和numsecond来进行存储。符号需要一个char op来存储。 b)然后考虑在计算的过程中,numfirst和numsecond的存储状态有三种,一种是 numfirst==0 && numsecond==0 也就是程序刚开始运行还没有开始录入数字的状 态。二种是numfirst!=0 && numsecond==0 也就是第一个数字已经录入,符号也已 经录入时候把m_Dis的值直接赋值给numfirst,第三种是numfirst!=0 &&numsecond!=0,表示可以通过op来把两数合并为一个数。 c)考虑到该计算器支持连续的计算,比如3.33+1.33*88/96= ?。所以必须在点符号 Button也要计算出之前的结果,通过判断op,来计算,把两个数字合并为一个数字, 方便下一次运算,功能近似于点=,所以把=也划分到符号类。 d)因为数字全部使用的是double,键入的数字必须通过一定的处理达到累加的效果, 加上小数和整数的处理差异性大,所以分别用point_flag来判断,分别出来小数和 整数。 5.成员函数及其释义 因为对OnNum0()到OnNum9()的处理函数差异仅在一个数字上,可以通过调用一个共同的函数OnCal(double num)来简化源代码长度,增加模块性。 void CCalcDlg::OnCal(double num) { //分三种状态来处理 if(numfirst!=0 && numsecond!=0) { if(point_flag==TRUE) //判定为小数 { poz*=0.1; //小数进位 m_Dis=m_Dis+poz*num;//递增 UpdateData(false); //把结果从内存传递到屏幕 } else

VS2008下计算器的MFC编程实现..

VS2008下计算器的MFC编程实现 简单的计算器编程,完全在VS2008下实现,主要用于熟悉VS2008的功能。 谨以此分享给和我一样初学MFC的朋友们。 STEP1:页面设计 1.新建工程 首先打开Visual Studio2008,选择MFC应用程序,设定好路径和工程名(这里我设置工程名为为“Calculator”)。这里要注意的是在创建向导步骤1的时候,我们选择“基本对话框”,其他选项默认即可。

之后我们可以点击完成便看到以下界面:

此时我们把当前页面上原配的控件按Delete全部清除(如下图) 2.添加控件 接着我们按照MFC自带的控件选项进行我们本次计算器的控件添加。点击右侧的工具栏按钮(以下是控件)

我们在原先清空的界面中依次用上图控件画出一个基本的计算器页面(如下图)。 影响用户的心情。

3.修改空间ID和Caption 上图各控件类型如下: Edit Control Button Group Box:选择其中一个GroupBox,右键单击,选择[属性]。在右边显示属性对话框。

每个控件“属性”都有属于它自己的ID,默认的Group Box的ID为IDC_STATIC,而且Cap当然我们为了“顾名思义”,对控件ID进行修改成我们容易辨认的(也可以不改),添加完控件并修改ID。4个Group Box的ID分别修改为IDC_STATIC_FRAME ,IDC_STATIC_IN, IDC_STATIC_RESULT, IDC_STATIC_BUTTON 控件Edit Control和Button也按相同的办法处理。ID设置完成可以在“Resourse.h”中查看。

最新VC++mfc编计算器+源代码

V C++m f c编计算器+ 源代码

用C++编写计算器程序 搞要本课程设计是在基于对话框的应用程序中模拟一个计算器,本计算器可以进行十进制下的四则运算(加、减、乘、除)和四则混合运算,可以把十进制转化为二进制或十六进制,可以进行一些常用的函数运算(比如sin、cos、tan、cot、sqrt、ln等),还可以支持带“(”,“)”符号的表达式的计算。系统开发平台为Windows XP,程序设计设计语言采用Visual C++6.0,程序运行平台为Windows 98/2000/XP。程序通过调试运行,初步实现了设计目标。 关键词程序设计;计算器;C++; 1 引言 在现代社会中,计算器已经进入了每一个家庭,人们在生活和学习中经常需要使用到计算器,它的出现大大减少了人们在计算方面的工作量,可以说它在人们生活和学习中是不可缺少的。 1.1C++介绍 C++语言的主要特点表现在两个方面,一是全面兼容C语言,二是支持面向对象的程序设计方法[1]。 (1) C++是一个更好的C,它保持了C语言的优点,大多数的C程序代码略作修改或不作修改就可在C++的集成环境下调试和运行。这对于继承和开发当前已在广泛的软件是非常重要的,可以节省大量的人力和物力。

(2) C++是一种面向对象的程序设计语言它使得程序的各个模块的独立性更强,程序的可读性和可移植性更强,程序代码的结构更加合理,程序的扩充性更强。这对于设计、编制和调试一些大型的软件尤为重要。 (3) C++集成环境不仅支持C++程序的编译和调试,而且也支持C程序的编译和调试。通常,C++程序环境约定:当源程序文件的扩展名为c.时,则为C程序;而当源程序文件的扩展名为cpp.时,则为C++程序。 (4) C++语句非常简练,对语法限制比较宽松,因此C++语法非常灵活。其优点是给用户编程带来书写上的方便。其缺点是由于编译时对语法限制比较宽松,许多逻辑上的错误不容易发现,给用户编程增加了难度。 1.2计算器的介绍 (1)在运行程序后,系统会弹出一个基于对话框的计算器界面,如下图所示:

基于MFC的计算器C++程序

我自己编写的一个计算器程序,能够实现连续加减乘除运算,界面美观,学习简单,希望能帮到大家。 工程名为Firsttry,基于对话框设计 以下为对话框FirsttryDlg.h和FirsttryDlg.cpp // FirsttryDlg.h : 头文件 // #pragma once // CFirsttryDlg对话框 classCFirsttryDlg : public CDialogEx { // 构造 public: CFirsttryDlg(CWnd* pParent = NULL); // 标准构造函数 // 对话框数据 enum { IDD = IDD_FIRSTTRY_DIALOG }; 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 OnBnClickedSub(); afx_msg void OnCalcDeci(); afx_msg void OnCalcHex(); afx_msg void OnBnClickedNumber1(); afx_msg void OnBnClickedNumber2(); afx_msg void OnBnClickedNumber3(); afx_msg void OnBnClickedNumber4(); afx_msg void OnBnClickedNumber5(); afx_msg void OnBnClickedNumber6(); afx_msg void OnBnClickedNumber7(); afx_msg void OnBnClickedNumber8(); afx_msg void OnBnClickedNumber9(); afx_msg void OnBnClickedNumber0(); afx_msg void OnBnClickedNumbera(); afx_msg void OnBnClickedNumberb(); afx_msg void OnBnClickedNumberc(); afx_msg void OnBnClickedNumberd(); afx_msg void OnBnClickedNumbere(); afx_msg void OnBnClickedNumberf(); afx_msg void OnBnClickedAdd(); afx_msg void OnBnClickedMul(); afx_msg void OnBnClickedDiv(); afx_msg void OnBnClickedEqual(); afx_msg void OnBnClickedBackspace(); afx_msg void OnBnClickedClear(); };

基于VC的MFC计算器案例步骤及源代码

基于VC的MFC计算器案例步骤及源代码 基于VC的MFC计算器案例步骤及源代码 基于VC的MFC计算器案例详细步骤有图有代码,图中右边的各个函数也都能实现:清除,加,减,乘,除,倒数,e的x次方,以e为底x的对数,10的x次方,以10为底x的对数,余弦,反余弦,双曲余弦值,正弦,反正弦,双曲正弦值,正切,反正切,双曲正切值,x的y次方,2的x次方,n(n为整数)的阶乘。如图: 步骤: 1.创建一个基于对话框的应用程序(这一步应该都会吧!),命名为dckCalculator; 2.打开资源视图->点击“dckCalculator”左边的“+”->点击“dckCalculator.rc”左边的“+”->点击“Dialog”左边的“+”->双击“IDD_DCKCALCULATOR_DIALOG”->去除“确定”“取 消”“TODO: 在此放置对话框控件。”几个组件(全选。然后右击选择“删除”即可):

3.按照我们想要的效果给对话框添加组件->编辑各个组件的显示名字->改变其ID属性 4.将编辑框的属性中的Align Text设置为right,如图: 5.设置相关属性(每次改变ID都要保存一下): 控件 Caption(名称)ID 控件caption ID 按钮0 IDC_BUTTON0 按钮exp IDC_EXP 按钮 1 IDC_BUTTON1 按钮10^x IDC_10X 按钮 2 IDC_BUTTON2 按钮cos IDC_COS

按钮 3 IDC_BUTTON3 按钮sin IDC_SIN 按钮 4 IDC_BUTTON4 按钮ln IDC_LN 按钮 5 IDC_BUTTON5 按钮log IDC_LOG 按钮 6 IDC_BUTTON6 按钮arccos IDC_ARCCOS 按钮7 IDC_BUTTON7 按钮arcsin IDC_ARCSIN 按钮8 IDC_BUTTON8 按钮tan IDC_TAN 按钮9 IDC_BUTTON9 按钮arctan IDC_ARCTAN 按钮+/- IDC_BUTTON_SIGN 按钮cosh IDC_COSH 按钮. IDC_BUTTON_POINT 按钮sinh IDC_SINH 按钮+ IDC_BUTTON_ADD 按钮tanh IDC_TANH 按钮- IDC_BUTTON_MINUS 按钮X^y IDC_XDEY 按钮* IDC_BUTTON_MUTIPLY 按钮2^x IDC_2DEX 按钮/ IDC_BUTTON_DIV 按钮N! IDC_NJIECHENG 按钮 C IDC_BUTTON_CLEAR 单选弧度IDC_HUDU 按钮sqrt IDC_BUTTON_SQRT 单选角度IDC_JIAODU 按钮1/x IDC_BUTTON_RECI 编辑框编辑框IDC_DISPLAY(只读) 按钮= IDC_BUTTON_EQUAL 6.将编辑框中属性的“read only”设置为ture! 7.在类视图中给CdckCalculatorDlg类添加成员变量: int m_duType;初始值为0,用来作为判定弧度还是角度的变准; double m_first;//存储一次运算的第一个操作数及一次运算的结果 double m_second;//存储一次运算的第二个操作数 CString m_operator;//存储运算符 double m_coff;//存储小数点的系数权值 8.给编辑框添加关联变量:(右击编辑框->添加变量) CString m_display;//编辑框IDC_DISPLAY的关联变量,显示计算结果(注意最右边选择“value”) 9.双击“弧度”给其添加事件响应(等价于右击然后添加事件处理器);

vc6.0中用MFC编写计算器代码

// CKcalculateDlg.cpp : implementation file // #include "stdafx.h" #include "math.h" #include "CKcalculate.h" #include "CKcalculateDlg.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif // double m_first; //存储一次运算的第一个操作数及一次运算的结果// double m_second; //存储一次运算的第二个操作数 // CString m_operator; //存储运算符 // double m_coff; //存储小数点的系数权值 ///////////////////////////////////////////////////////////////////////////// // CAboutDlg dialog used for App About ///////////////////////////////////////////////////////////////////////////// class CAboutDlg : public CDialog { public: CAboutDlg(); // Dialog Data //{{AFX_DATA(CAboutDlg) enum { IDD = IDD_ABOUTBOX }; //}}AFX_DATA // ClassWizard generated virtual function overrides //{{AFX_VIRTUAL(CAboutDlg) protected: virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support //}}AFX_VIRTUAL // Implementation protected:

C++_MFC计算器编程课程设计--MFC编程科学计算器

C++_MFC计算器编程课程设计--MFC编程科学计算器本科生课程设计(实践)设计报告 ( 程序设计基础) MFC编程科学计算器题目 1104120502 学生学号 郭斌繁学生姓名 蔡旭晖指导教师 交通运输工程学院学院 交通运输类1205 班专业班级 计算机基础教学实验中心 2013 年7 月1 日 程序设计(C++) 实践报告 1.引言 C++语言的主要特点表现在两个方面,一是全面兼容C语言,二是支持面向对象的程序: (1)C++是一个更好的C,它保持了C语言的优点,大多数的C程序代码略作修改或不作修改就可在C++的集成环境下调试和运行。这对于继承和开发当前已在广泛的软件是非常重要的,可以节省大量的人力和物力。 (2)C++ 是一种面向对象的程序设计语言它使得程序的各个模块的独立性更强,程序的可读性和可移植性更强,程序代码的结构更加合理,程序的扩充性更强。这对于设计、编制和调试一些大型的软件尤为重要。

(3)C++集成环境不仅支持C++程序的编译和调试,而且也支持C程序的编译和调试。通常,C++!序环境约定:当源程序文件的扩展名为c(时,则为C程序; 而当源程序文件的扩展名为cpp(时,则为C++程序。 ⑷C++语句非常简练,对语法限制比较宽松,因此C++语法非常灵活。其优点是给用户编程带来书写上的方便。其缺点是由于编译时对语法限制比较宽松,许多逻辑上的错误。 次课程设计主要在运算过程中,如果通过计算器来完成,就会减少计算量,该程序即可以在简单计算器键面下进行简单运算,也可以在科学计算器键面下进行高级的科学计算。并且可以分别计算弧度、角度的三角函数的计算等较为复杂的运算。 (1). 设计目标 利用MFC程序开发工具设计一款可以进行简单计算及部分科学计算的计算器。在设计当中将综合“面向对象程序设计与结构化程序设计”的思想方法和知识点,编制一个小型的应用程序系统。通过此设计进一步提高自己的动手能力,并能使自己清楚的知道开发一个应用程序的思想、方法和流程。(2). 选题分析此次实践所选题目中除了简单的加减乘除运算程序之外还包括了余弦函数、双曲余弦函数、度分秒的转换和X的y次方及y次根号下x的运算程序。除去四则基本运算程序之外,其余程序不可以直接调用系统的库函数需要经过自己的思考和查阅资料并结合迈克劳林等公式从源头开发相应运算的源代码,因此必须熟练掌握基本编程、代码语言、类运算及成员函数的设计、按键功能设计和整体协调等方面的相关知识。在此程序的设计过程中既锻炼了自己对C++软件的掌握程度也 服务了自己,尤其是装有WIN8的电脑,其本身的系统是不带计算器软件的,通过此设计也算是实践于应用。 2.总体设计 (1) 体系设计: 所要设计的程序是一个简单的计算器,能正确输入数据,能实现加、减、 乘、除等算术运算,能进行简单三角运算、次方开方及双曲函数的运算,运算结果能正确显

手把手教MFC做计算器

手把手教MFC做计算器 //////////////////////////////////////////////////////// STEP 1(页面设计部分与控件添加部分) 首先打开VC,选择MFC AppWizard[exe],设定好路径和工程名(这里我设置工程名为为“My”)。这里要注意的是在创建向导步骤1的时候,我们选择“基本对话 框”。 之后我们可以点击完成便看到以下界面

此时我们把当前页面上原配的控件按Delete全部清除(如下图)

接着我们按照MFC自带的控件选项进行我们本次计算器的控件添加(以下是控件) 我们在原先清空的界面中依次用上图控件画出一个基本的计算器页面(如下图)。

当然作为“所见即所得”的MFC控件设计,干净整齐的界面是基本要求,甚至会影响用户的心情。 上图我们用按钮控件添加一共15个按钮,分别是数字“ 0 ~ 9” 以及“+ - * /”。 每个控件“属性”都有属于它自己的ID,默认的按钮按键为IDC_BUTTON0,而且Cap当然我们为了“顾名思义”,对控件ID进行修改成我们容易辨认的(也可以不改),添加完控件并修改ID之后。(如下图) 这里我们把数字按钮0 设置ID为IDC_BUTTON14_NUM0,其他的依次类推

完成修改ID后,就需给控件添加消息响应了,基本操作可以是直接双击控件,便会有向导提示。 MFC默认下了的响应信息都为On_开头,而且以下显示的是数字5的消息响应.之后所有的依次类推,这步骤一般不 对成员函数名称做任何修改,直接点击OK即可 之后就会跳转到具体的代码实现过程这里我们依次给每一个控件添加消息响应函数 (以下仅列出一部分)

用MFC制作简易计算器

用VC++制作简单计算器 简述:该课程设计将实现一个简单计算器。其类似于Windows附件中自带的计算器。这个计算器可以实现简单的四则运算功能,而且具有简洁大方的图文外观。系统具有良好的界面和必要的交互信息。即时准确地获得需要的计算的结果,充分降低了数字计算的难度,从而节约了时间,对人们的生活有一定的帮助。在课程设计中,程序设计设计语言采用Visual C++,在程序设计中,采用了面向对象解决问题的方法。 课题背景 计算器是日常生活中十分便捷有效的工具,能实现加、减、乘、除简单运算的工具。要实现计算功能,可以用VC++的知识编写程序来解决此问题。该计算器大大的降低了数字计算的难度及提高了计算的准确度和精确度。该计算器使用非常简单和方便,对广大中小学生的学习有巨大帮助作用,也对在职人员的工作有点帮助作用。 功能说明 系统具有良好的界面;必要的交互信息;简约美观的效果。使用人员能快捷简单地进行操作。可单机按钮进行操作即时准确地获得需要的计算的结果,充分降低了数字计算的难度和节约了时间,对人们的生活有一定的帮助。 (1)包含的功能有:加、减、乘、除; (2)计算器上数字分为显示区,可以显示用户所点击的按键,最后显示结果;按键区,可以让用户选择所需的数字以及小数点;功能区,该区域提供用户所需的运算按钮; (3)计算功能基本上是用系统内部函数; (4)“AC”按钮可以清除所有已输入的数据从头计算; (5)“DEL”按钮可以删除所输入的最后以为数字; 编辑资源

创建步骤新建一个MFC基于对话框的工程

VC++对话框界面

右击按钮,修改按钮的属性 建立类向导 最后点击Edit Code就可以添加代码 对其它按钮的操作与之类似,对编辑框的“建立类向导”有点区别,这里不附详细步骤 代码展示 “1”按钮对应的代码

MFC简单计算器设计正文

实用计算器程序 1.基本功能描述 计算器是人们日常生活中非常实用的计算工具。预期设计目标与实际计算器为标准,Windows 10系统提供的计算器为范例进行设计。 实用计算器要实现单目运算和双目运算。单目运算主要包括阶乘、正弦、余弦;双目运算主要包括加、减、乘、除、乘幂等。计算器要能够对输入的各种数据进行处理,包括小数、整数、负数等数据进行操作。实际过程中要能够对不同的数据灵活判断执行。同时要能够对不满足运算符的操作数,提示出错信息以方便用户进行处理。用户的修改包括清屏和退格。程序设计的重点和难点在于:第一,能够对于不同的操作数和操作符进行连续运算,运算过程中要有优先级的判断,根据优先级执行不同的运算顺序;第二,能够用一个编辑框实现运算表达式的显示和结果的输出。 编程环境采用Visual Studio 2017提供的MFC建立对话框应用程序,设计界面要简单大方,并提供程序所有功能的接口。 2.设计思路 表1 操作符优先级设计 优先级操作符 1 阶乘、正弦、余弦 2 乘幂 3 乘、除 4 加、减 对对话框编辑框关联一个变量从中读取数据,按下数字键时对数据数组num[]进行更新,其中num[0]表示的是当前已经存储变量的个数。由于算法设计为四层优先级,且单目运算的优先级最高。当按下相应单目运算符,首先将当前数据数组的最后一个存储(防止按下Backspace退格发生错误),并将此位数据执行运算后重新赋值。但按下双目运算符相应按键后,将计数num[0]++,同时将运算符的类型和位置记录。当按下等于之前,这样就将一个单目双目混合的运算表达式转化为双目运算。如果没有按下等号键,则继续执行循环。在按下等号按钮之后,按照先乘幂、再乘除、后加减的运算顺序执行运算,将最后结果保存并显示。(在实际的计算器中,执行完运算之后,按下运算符的操作键,最终结果将按照左操作数的形式出现,故需要保存变量。)如果用户没有结束程序,在运行初始化程序,进行下一次运算,否则直接退出。

相关文档
最新文档