第11讲进制转换计算器.ppt_第1页
第11讲进制转换计算器.ppt_第2页
第11讲进制转换计算器.ppt_第3页
第11讲进制转换计算器.ppt_第4页
第11讲进制转换计算器.ppt_第5页
已阅读5页,还剩26页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1 第11讲进制转换计算器 2 3 本讲主要内容 1 单选按钮控件2 复选框控件 4 1 单选按钮控件 单选按钮时一个圆圈和文本标签组合 当它被选中时 圆圈中就标上一个黑点 单选按钮通常是分组使用 同一组的单选按钮具有互斥性 即某一单选按钮被选中会清除同组内其他单选按钮的选中状态 通过将某一单选按钮Properties中General选项卡中勾选Group标识某一组开始 直到下一个Group标识出现 其顺序是Tab键顺序 单击菜单Layout TabOrder命令 5 1 单选按钮控件 操作步骤 1 打开IntegerCalculator工程 添加2个单选按钮 如下图所示 其ID值分别为IDC RADIODEC和IDC RADIOOCT 6 2 单选按钮控件 2 选中IDC RADIODEC控件Properties中General选项卡中Group选项 3 打开ClassWizard的MemberVariables选项卡 为IDC RADIODEC添加关联变量m nHex 如下图所示 并在CIntegerCalculatorDlg类的构造函数中将其初始值改为0 表示10进制为默认选项 7 1 单选按钮控件 8 1 单选按钮控件 4 为打开ClassWizard的MessageMaps选项卡 为IDC RADIODEC和IDC RADIOOCT添加BN CLICKED消息 生成OnRadiodec 和OnRadiooct 函数 并添加如下代码 9 1 单选按钮控件 voidCIntegerCalculatorDlg OnRadiodec CButton p8 CButton GetDlgItem IDC B8 通过ID得到按钮控件对象的指针p8 EnableWindow TRUE 使按钮可用CButton p9 CButton GetDlgItem IDC B9 p9 EnableWindow TRUE transform 进制转换 其中GetDlgItem 函数的功能是根据控件ID获取对话框中控件的句柄 其函数声明为 CWnd GetDlgItem intnID const 其中nID为控件的ID值 而EnableWindow 函数是CWnd类的成员函数 功能是使窗口允许或禁止 其函数声明为 BOOLEnableWindow BOOLbEnable TRUE 其中bEnable为TRUE 则窗口被允许 为FALSE 则窗口将被禁止 10 voidCDialog10Dlg OnRadiooct TODO AddyourcontrolnotificationhandlercodehereCButton p8 CButton GetDlgItem IDC B8 通过ID得到按钮控件对象的指针p8 EnableWindow FALSE 使按钮不可用CButton p9 CButton GetDlgItem IDC B9 p9 EnableWindow FALSE transform 进制转换 11 1 单选按钮控件 5 编写transform 函数 在IntegerCalculatorDlg h文件中添加函数声明voidtransform 在IntegerCalculatorDlg cpp文件中添加如下代码 voidCIntegerCalculatorDlg transform UpdateData TRUE 获得数据if m nHex 0 10进制单选按钮被选中m nValue octToDec m nValue 将8进制转换为10进制else 8进制单选按钮被选中 chars8 30 itoa m nValue s8 8 将10进制转换为8进制m nValue atoi s8 UpdateData FALSE 更新界面 显示转换后结果 octToDec 函数为自定义函数 功能是将8进制数值转换为10进制数值 同样10进制转换为8进制 我们也可以参照上面的思路编写一个转换函数 也可以采用现有的库函数进行转换 itoa 函数的功能是将整数转换为字符串 其原型为 char itoa intvalue char string intradix 其中参数含义为 value 待转换整数 string 转换后字符串指针radix 转换基数 可以是2进制 8进制 10进制和16进制 atoi 函数的功能是将字符串转换为整数 转换过称谓跳过前面的空格字符 直到遇上数字或正负符号才开始做转换 而再遇到非数字或字符串结束时 0 才结束转换 并将结果返回 其函数原型为 intatoi constchar nptr 其中参数含义为 nptr 待转换字符串 12 1 单选按钮控件 其中octToDec 函数为自定义函数 功能是将10进制数值转换为8进制数值 函数代码如下 intCIntegerCalculatorDlg octToDec intvalue intresult 0 结果变量intnum 0 次幂变量while value 0 intlow value 10 取个位数intmul 1 for inti 0 i num i 该位数为8的num次幂mul 8 result result low mul 累加结果num value value 10 去掉个位数 returnresult 返回计算结果 13 1 单选按钮控件 6 修改计算过程 在OnBequal 函数做如下修改 voidCIntegerCalculatorDlg OnBequal m nOperand2 m nValue if m nHex 1 如果是8进制 m nOperand1 octToDec m nOperand1 将运算数转换为10进制m nOperand2 octToDec m nOperand2 switch m nOperator if m nHex 1 如果是8进制 chars8 30 itoa m nValue s8 8 将计算结果以8进制显示m nValue atoi s8 14 2 复选框按钮 为了实现进制功能的开启与关闭 我们采用复选框控件作为切换控件 标准的复选框在文本标签旁边有一个方框 当该选项被选中时 方框内出现一个 号 当该项未被选中时 方框内空白 15 2 复选框按钮 添加复选框的操作步骤 1 打开IntegerCalculator工程 添加复选框控件IDC CHECKHEX 16 2 复选框按钮 2 打开ClassWizard的MessageMaps选项卡 为IDC CHECKHEX添加BN CLICKED消息 生成OnCheckhex 函数 17 2 复选框按钮 3 在OnCheckhex 函数中添加如下代码 voidCIntegerCalculatorDlg OnCheckhex CButton pHex CButton GetDlgItem IDC CHECKHEX 如果复选框选中if BST CHECKED pHex GetCheck CButton pDec CButton GetDlgItem IDC RADIODEC pDec EnableWindow TRUE CButton pOct CButton GetDlgItem IDC RADIOOCT pOct EnableWindow TRUE GetCheck 函数的功能是获得复选框的选中状态 其函数声明为 intGetCheck const 其返回值为0 按钮处于未选中状态 1 按钮处于选中状态 2 按钮状态不定 仅当按钮风格为BS 3STATE或BS AUTO3STATE时 如果按钮是其它风格 则返回0 为了代码清晰 系统为其做了宏定义 defineBST UNCHECKED0 x0000 defineBST CHECKED0 x0001 defineBST INDETERMINATE0 x0002 18 2 复选框按钮 3 在OnCheckhex 函数中添加如下代码 else CButton pDec CButton GetDlgItem IDC RADIODEC pDec EnableWindow FALSE CButton pOct CButton GetDlgItem IDC RADIOOCT pOct EnableWindow FALSE 19 2 复选框按钮 4 为了使对话框在初始运行时保持正常状态 需在OnInitDialog 函数中添加如下代码 BOOLCIntegerCalculatorDlg OnInitDialog SetIcon m hIcon FALSE SetsmalliconCButton pDec CButton GetDlgItem IDC RADIODEC pDec EnableWindow FALSE CButton pOct CButton GetDlgItem IDC RADIOOCT pOct EnableWindow FALSE 20 2 复选框按钮 5 编译 链接 运行 21 3 补充案例 例7 9 世界杯知识小测验该问卷调查包括3道题目 两道单选题 一道多选题 单选题选项采用单选按钮控件实现 多选题选项采用复选框控件实现 22 3 补充案例 实现步骤 1 创建基于对话框的Survey工程 2 删除对话框中原有的 确定 取消 按钮和静态文本控件 然后添加4个单选按钮控件 3个复选框控件 4个静态文本控件和1个按钮 并修改Caption 23 3 补充案例 3 修改控件ID 单选按钮控件ID依次为IDC EURO IDC AFRI IDC SPAIN IDC HOLLAND 复选框控件ID依次为IDC ITALY IDC FRANCE IDC BRAZIL 按钮控件ID为IDC SUBMIT 24 3 补充案例 4 修改控件的TabOrder 单击菜单Layout TabOrder命令 通过鼠标点击修改为下图所示顺序 25 3 补充案例 5 将控件IDC EURO和IDC SPAIN的General选项卡中Group选项选中 6 修改对话框Caption为 世界杯知识小测验 7 为控件添加关联变量 如下图所示 26 3 补充案例 27 3 补充案例 8 为按钮控件IDC SUBMIT添加消息响应函数 单击菜单View ClassWizard命令 在MessageMaps选项卡中为IDC SUBMIT按钮添加BN CLICKED消息响应函数OnSubmit 28 3 补充案例 9 在函数OnSubmit 中添加代码如下 voidCSurveyDlg OnSubmit UpdateData TRUE 获得用户操

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论