




已阅读5页,还剩31页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1 第12讲复杂计算器 2 3 本讲主要内容 1 新建对话框2 旋钮控件3 选项卡控件 4 1 新建对话框 前面章节中的所有案例都是在系统默认生成的对话框上进行开发 此外VC还允许我们新建对话框并在其上完成设计工作 本节我们将新建一个对话框 并设计完成一个房贷计算器界面 5 1 新建对话框 操作步骤 1 建立新工程ComplexCalculator 进入ResourceView视图 2 在Dialog文件上单击右键 选择InsertDialog命令 如下图所示 6 1 新建对话框 7 1 新建对话框 3 单击右键 选择Properties窗口 修改ID为IDD CREDIT DIALOG 4 删除 OK 和 Cancel 按钮 8 1 新建对话框 5 双击该对话框为其添加类 如下图所示 单击 OK 按钮 输入类名 单击 OK 按钮 9 1 新建对话框 6 编译 链接 10 2 旋钮控件 7 在IDD CREDIT DIALOG对话框中 添加下图所示的控件 控件ID分别为IDC LOAN IDC RATE IDC MONTH IDC TOTALPAY IDC PAY和IDC CALC 除此之外还有一个旋钮控件IDC SPIN MONTH 旋钮控件需要与其他控件共同使用 旋钮控件的箭头按钮在按动时增大或减少一个数值 该值以数字的形式显示在一个伙伴窗口中 用户既可以通过旋钮控件修改伙伴窗口中的数字也可以直接在伙伴窗口中修改 11 2 旋钮控件 7 调整控件的Tab键顺序 如下图 以保证旋钮控件与伙伴窗口的Tab键顺序相邻 且大于伙伴窗口的Tab键顺序 12 2 旋钮控件 8 设置旋钮属性 如下图所示 13 2 旋钮控件 9 为控件添加关联变量 如下图所示 14 2 旋钮控件 10 为CCreditDlg类添加OninitDialog 函数 该函数在系统生成的主对话框中自动添加 本例为CComplexCalculatorDlg 但在新建对话框中需要手工添加 打开ClassWizard 在MessageMaps中 ObjectIDs选择CCReditDlg Messages选择WM INITDIALOG 单击 AddFunction 按钮 15 2 旋钮控件 11 在OninitDialog 函数中添加如下代码 BOOLCCReditDlg OnInitDialog CDialog OnInitDialog m spinMonth SetRange 0 360 设置最大贷款月数为360 即30年returnTRUE 16 2 旋钮控件 12 为 计算 按钮添加响应函数 并输入如下代码 voidCCReditDlg OnCalc UpdateData TRUE doublerate m dRate 100 等额本息贷款计算方法m dPay m dLoan rate pow 1 rate m nMonth pow 1 rate m nMonth 1 m dTotalPay m dPay m nMonth UpdateData FALSE 13 编译 链接 其中pow x y 函数用来计算x的y次幂 使用该函数时需添加头文件math h 17 3 选项卡控件 到目前为止 我们已经设计并实现了两类计算器 一类是7 5节及之前讲述的整数计算器 一类是前面讲述的房贷计算器 如何将这两类计算器融合在一个程序中呢 MFC提供选项卡控件来解决这一问题 选项卡控件类似于一个文件柜上的标签 选项卡控件由多个页面组成 每个页面都有一个带有文本的标签 当用户单击一个标签就显示对应的页面 18 3 选项卡控件 操作步骤 1 打开ComplexCalculator工程 双击打开IDD COMPLEXCALCULATOR DIALOG对话框资源 修改Caption为 复杂计算器 在其中添加选项卡控件 修改ID为IDC TAB 并在其Properties中的MoreStyles选项卡中勾选Bottom 如下图所示 19 3 选项卡控件 20 3 选项卡控件 2 打开ClassWizard 在MemberVariables选项卡中为IDC TAB添加CTabCtrl类型的关联变量m tabPanel 3 再插入一个新的对话框资源 ID修改为 IDD INTEGER CALCULATOR DIALOG 然后参考IntegerCalculator工程内容 布局控件 并为其添加CIntegerCalculatorDlg类 同时完成控件的各种操作 21 3 选项卡控件 4 将IDD CREDIT DIALOG和IDD INTEGER CALCULATOR DIALOG对话框资源的属性修改为下图所示 22 3 选项卡控件 5 在ComplexCalculatorDlg h文件头部中添加 include CreditDlg h include IntegerCalculatorDlg h 并在CComplexCalculatorDlg类中添加成员变量 CCReditDlgm dlgCredit CIntegerCalculatorDlgm dlgCalc 23 3 选项卡控件 6 在CComplexCalculatorDlg类的OnInitDialog 函数添加如下代码 BOOLCComplexCalculatorDlg OnInitDialog SetIcon m hIcon FALSE Setsmallicon 插入两个标签m tabPanel InsertItem 0 算术计算器 m tabPanel InsertItem 1 房贷计算器 创建两个对话框m dlgCalc Create IDD INTEGER CALCULATOR DIALOG GetDlgItem IDC TAB m dlgCredit Create IDD CREDIT DIALOG GetDlgItem IDC TAB 用于在一个选项卡控件中插入一项 其函数声明如下 BOOLInsertItem intnItem LPCTSTRlpszItem nItem 新项的索引 从0开始 lpszItem 新项的标签文本指针 CDialog Create 函数的功能是创建对话框对象 函数声明为 BOOLCreate UINTnIDTemplate CWnd pParentWnd NULL nIDTemplate 对话框资源ID pParentWnd 该对话框的父窗口 24 3 选项卡控件 获得IDC TAB客户区大小CRectrs m tabPanel GetClientRect returnTRUEunlessyousetthefocustoacontrol 用于设置选项卡中当前被选择的项 其函数声明如下 intSetCurSel intnItem nItem 将要设置被选择项的索引 25 3 选项卡控件 7 选项卡控件切换处理 打开ClassWizard 在MessageMaps选项卡中为IDC TAB添加TCN SELCHANGE消息响应函数 并输入如下代码 26 3 选项卡控件 voidCComplexCalculatorDlg OnSelchangeTab NMHDR pNMHDR LRESULT pResult intCurSel m tabPanel GetCurSel 获得选项卡中当前被选中标签的索引switch CurSel case0 如果第一个标签被选中 显示数值计算器对话框 同时隐藏贷款计算器m dlgCalc ShowWindow true m dlgCredit ShowWindow false break case1 如果第二个标签被选中 隐藏数值计算器对话框 同时显示贷款计算器m dlgCalc ShowWindow false m dlgCredit ShowWindow true break pResult 0 用于获得选项卡中当前被选择的项 其函数声明如下 intGetCurSel const 27 3 选项卡控件 8 编译 链接 运行 28 4 补充 例7 11 使用旋钮控件控制小数的增减 29 4 补充 操作步骤 1 创建基于对话框的SpinButton工程 2 删除对话框中原有的 确定 取消 按钮和静态文本控件 然后添加1个静态文本控件 1个文本编辑框控件和一个旋钮控件 并修改Caption 布局如下图所示 30 4 补充 3 修改控件ID 文本编辑框控件ID为IDC RATE 旋钮控件ID为IDC SPIN 4 修改控件属性 IDC RATE控件的Styles选项卡中Aligntext修改为Right IDC SPIN控件的Styles选项卡中勾选Autobuddy选项 5 修改对话框Caption为 旋钮示例 6 为IDC RATE控件添加double类型的关联变量m dRate 并设置其最小值为0 0 最大值为100 0 为IDC SPIN控件添加CSpinButtonCtrl类型关联变量m spin 31 4 补充 7 在OnInitDialog 函数添加如下代码 BOOLCSpinButtonDlg OnInitDialog SetIcon m hIcon FALSE Setsmalliconm spin SetRange 0 1000 旋钮范围m spin SetPos 0 旋钮初始值UpdateData FALSE returnTRUE returnTRUEunlessyousetthefocustoacontrol 32 4 补充 8 单击菜单View ClassWizard命令 在MessageMaps选项卡中为CSpinButtonDlg添加WM VSCROLL消息响应函数OnVScroll 33 4 补充 9 在函数OnVScroll 中添加代码如下 voidCSpinButtonDlg OnVScroll UINTnSBCode UINTnPos CScrollBar pScrollBar TODO Addyourmessagehandlercodehereand orcalldefaultif pScrollBar GetDlgCtrlID IDC SPIN 如果垂直滚动的控件是旋钮IDC SPIN m dRate nPos 10 0 将旋钮值除10 0 如果除100 文本编辑框内容每次变化0 01UpdateData FALSE CDialog OnVScroll nSBCode nPos pScrollBar 34 4 补充 10 单击菜单View ClassWizard命令 在Mes
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 基础土方开挖专项施工方案
- 山南市中储粮2025秋招面试专业追问题库机电维修岗
- 恒大名都真金板施工方案
- 2025年道教知识考试题及答案
- 常州市中石油2025秋招笔试模拟题含答案财务与审计岗
- 山东视唱考试试题及答案
- 2025年法律文书机考试题及答案
- 中国广电孝感市2025秋招面试典型题目及答案
- 南充市中储粮2025秋招笔试行测高频题库及答案
- 国家能源宜昌市2025秋招化学工程类面试追问及参考回答
- 井冈山斗争与井冈山精神
- 秋天的怀念 全国公开课一等奖
- 资源环境与可持续发展PPT完整全套教学课件
- DB22∕T 2880-2018 建筑消防设施维护保养规程
- 河南省软科学计划项目申请书
- 医学细胞生物学第13章 细胞分裂与细胞周期
- YY/T 0064-2016医用诊断X射线管组件电气及负载特性
- GB/T 3810.7-2016陶瓷砖试验方法第7部分:有釉砖表面耐磨性的测定
- GB/T 31155-2014太阳能资源等级总辐射
- 工程施工停工令模板
- 2023年蒸汽管路设计
评论
0/150
提交评论