实验十一_编辑框、组合框和滑块控件的应用.doc_第1页
实验十一_编辑框、组合框和滑块控件的应用.doc_第2页
实验十一_编辑框、组合框和滑块控件的应用.doc_第3页
实验十一_编辑框、组合框和滑块控件的应用.doc_第4页
实验十一_编辑框、组合框和滑块控件的应用.doc_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

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

文档简介

实验十一 编辑框、组合框和滑块控件的应用(2学时)一、 实验目的1. 掌握Value型控件的绑定和UpdateData方法的使用;2. 掌握编辑框控件(Edit Control)的使用;3. 掌握组合框控件(Combo Box)的使用。二、 实验内容和步骤实验内容一 简易计算器参照教材P217页例9-6编写一个简易计算器,注意项目名设为xxCalculator。并注意以下几点:1. 为对话框类添加一个成员函数Calculate(在头文件中添加声明,cpp文件中添加定义),其函数体的内容为书上OnEnChangeNum1的内容。然后在各个消息响应函数中(包括OnEnChangeNum1)用Calculate取代OnEnChangeNum1的调用。这样做是为了代码的可读性更好。2. 注意在绑定完所有Value型变量后,去对话框类的构造函数定义处看下MFC向导是如何帮我们进行初始化的,并基于此理解为何Radio Button默认选中第一个。3. 注意理解代码中UpdateData的使用,重点是其参数为TRUE和FALSE时的不同含义。选做:从功能上完善该计算器(在提交时备注下在哪些方面进行了完善)。实验内容二 修改绘图工具栏在此我们在上次实验基础上对绘图工具栏进行进一步修改,将画笔的类型改用组合框(Combo Box)实现。1. 打开上次实验,编辑绘图工具栏对话框,删掉画笔线型对应的那组Radio Button控件,然后删除对话框类中与这些控件相关的所有代码。2. 拖入一个Combo Box。将其ID设为IDC_PEN_STYLE;将控件属性Sort置为False,以避免其自动排序;将Type属性设为Drop List,使得用户只能通过下拉框选取,不能在编辑框输入。3. 为该组合框控件绑定控制变量:4. 在Dlg类的对话框初始化函数OnInitDialog中为组合框控件初始化,添加列表项进去:5. 最后还差控件事件的响应,这里我们要实现:当用户改变组合框的选择时,修改画笔的线型(即修改成员m_penStyle的值)。双击组合框控件,跳转到默认事件的响应,对于组合框来说,其默认事件正是我们所需要的:当用户改变选择时产生的事件。在其中根据用户选择给m_penStyle赋值:大功告成,测试下吧。6. 下面我们使用Slider控件和编辑框控件为工具栏添加画笔宽度的设置。在对话框编辑界面拖入一个Group Box,Caption设为“线宽”;拖入一个Slider Control,ID设为IDC_PEN_WIDTH;拖入一个Edit Control,ID设为IDC_EDIT_WIDTH,Number设为True,即只允许输入数字。这里我们加2个控件是为了让用户既可以通过滑块控件设置线宽,也可以直接在编辑框中输入线宽。7. 为Slider Control绑定控制变量:8. 为Edit Control绑定int型的Value变量,并设置最小和最大值:设置了最小最大值后,会自动完成对用户输入的合法性检查,在代码中是通过DoDataExchange中的DDV_MinMaxInt(pDX, m_penWidth, 1, 10);这句完成的。9. 在Dlg类的OnInitDialog中对滑块控件进行初始化:10. 由于已经为编辑框控件绑定了Value型变量,修改其初值就可以了,在对话框类的构造函数中进行:11. 接下来我们为Slider Control控件添加滚动事件的处理,根据滑块位置设置m_penWidth的值,并更新Edit Control控件。Slider Control控件滚动事件的响应和之前有区别,是通过响应Dlg类的水平滚动消息WM_HSCROLL来完成的。在类视图中选中CDlgPaint类,在属性里面找消息WM_HSCROLL,添加响应函数:对话框的所有滑块控件和滚动条控件的水平滚动都是在这个函数中处理的,因此需要判断是不是滑块控件水平滚动(虽然在本程序中不要也可以,因为只有一个滑块控件,但这是个好习惯)。12. 当用户在编辑框中输入时,滑块也应滑到相应位置,因此我们双击编辑框控件,添加编辑框内容改变事件的处理:13. 我们还可以做些事情让用户更方便:当用户点编辑框时自动全选。为编辑框添加EN_SETFOCUS事件(获得焦点)的响应:注意,这里使用pEdit-SetSel(0,-1);达不到效果,因为在OnEnSetfocusEditWidth之后MFC有个取消选定的操作,这个我们改变不了,而PostMessage发送的EM_SETSEL会在获得焦点事件整个完成后才响应,即在取消选定后再进行全选。14. 此时画笔宽度属性还没有反应到预览框中,简单,修改下CPreview的OnPaint函数:测试下调整画笔宽度时预览窗的变化吧。15. 还差件事情:让画笔宽度影响绘制的图形。简单,修改V

温馨提示

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

评论

0/150

提交评论