实验十一_编辑框、组合框和滑块控件的应用

实验十一_编辑框、组合框和滑块控件的应用

ID:39577938

大小:458.00 KB

页数:8页

时间:2019-07-06

实验十一_编辑框、组合框和滑块控件的应用_第1页
实验十一_编辑框、组合框和滑块控件的应用_第2页
实验十一_编辑框、组合框和滑块控件的应用_第3页
实验十一_编辑框、组合框和滑块控件的应用_第4页
实验十一_编辑框、组合框和滑块控件的应用_第5页
资源描述:

《实验十一_编辑框、组合框和滑块控件的应用》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、实验十一编辑框、组合框和滑块控件的应用(2学时)一、实验目的1.掌握Value型控件的绑定和UpdateData方法的使用;2.掌握编辑框控件(EditControl)的使用;3.掌握组合框控件(ComboBox)的使用。二、实验内容和步骤实验内容一简易计算器参照教材P217页例9-6编写一个简易计算器,注意项目名设为xxCalculator。并注意以下几点:1.为对话框类添加一个成员函数Calculate(在头文件中添加声明,cpp文件中添加定义),其函数体的内容为书上OnEnChangeNum1的内容。然后在各个消息响应函数中(包括OnEnChangeNum1)

2、用Calculate取代OnEnChangeNum1的调用。这样做是为了代码的可读性更好。2.注意在绑定完所有Value型变量后,去对话框类的构造函数定义处看下MFC向导是如何帮我们进行初始化的,并基于此理解为何RadioButton默认选中第一个。3.注意理解代码中UpdateData的使用,重点是其参数为TRUE和FALSE时的不同含义。选做:从功能上完善该计算器(在提交时备注下在哪些方面进行了完善)。实验内容二修改绘图工具栏在此我们在上次实验基础上对绘图工具栏进行进一步修改,将画笔的类型改用组合框(ComboBox)实现。1.打开上次实验,编辑绘图工具栏对话框

3、,删掉画笔线型对应的那组RadioButton控件,然后删除对话框类中与这些控件相关的所有代码。1.拖入一个ComboBox。将其ID设为IDC_PEN_STYLE;将控件属性Sort置为False,以避免其自动排序;将Type属性设为DropList,使得用户只能通过下拉框选取,不能在编辑框输入。2.为该组合框控件绑定控制变量:3.在Dlg类的对话框初始化函数OnInitDialog中为组合框控件初始化,添加列表项进去:1.最后还差控件事件的响应,这里我们要实现:当用户改变组合框的选择时,修改画笔的线型(即修改成员m_penStyle的值)。双击组合框控件,跳转到

4、默认事件的响应,对于组合框来说,其默认事件正是我们所需要的:当用户改变选择时产生的事件。在其中根据用户选择给m_penStyle赋值:大功告成,测试下吧。2.下面我们使用Slider控件和编辑框控件为工具栏添加画笔宽度的设置。在对话框编辑界面拖入一个GroupBox,Caption设为“线宽”;拖入一个SliderControl,ID设为IDC_PEN_WIDTH;拖入一个EditControl,ID设为IDC_EDIT_WIDTH,Number设为True,即只允许输入数字。这里我们加2个控件是为了让用户既可以通过滑块控件设置线宽,也可以直接在编辑框中输入线宽。1

5、.为SliderControl绑定控制变量:2.为EditControl绑定int型的Value变量,并设置最小和最大值:设置了最小最大值后,会自动完成对用户输入的合法性检查,在代码中是通过DoDataExchange中的DDV_MinMaxInt(pDX,m_penWidth,1,10);这句完成的。1.在Dlg类的OnInitDialog中对滑块控件进行初始化:2.由于已经为编辑框控件绑定了Value型变量,修改其初值就可以了,在对话框类的构造函数中进行:1.接下来我们为SliderControl控件添加滚动事件的处理,根据滑块位置设置m_penWidth的值,

6、并更新EditControl控件。SliderControl控件滚动事件的响应和之前有区别,是通过响应Dlg类的水平滚动消息WM_HSCROLL来完成的。在类视图中选中CDlgPaint类,在属性里面找消息WM_HSCROLL,添加响应函数:对话框的所有滑块控件和滚动条控件的水平滚动都是在这个函数中处理的,因此需要判断是不是滑块控件水平滚动(虽然在本程序中不要也可以,因为只有一个滑块控件,但这是个好习惯)。2.当用户在编辑框中输入时,滑块也应滑到相应位置,因此我们双击编辑框控件,添加编辑框内容改变事件的处理:3.我们还可以做些事情让用户更方便:当用户点编辑框时自动全

7、选。为编辑框添加EN_SETFOCUS事件(获得焦点)的响应:注意,这里使用pEdit->SetSel(0,-1);达不到效果,因为在OnEnSetfocusEditWidth之后MFC有个取消选定的操作,这个我们改变不了,而PostMessage发送的EM_SETSEL会在获得焦点事件整个完成后才响应,即在取消选定后再进行全选。1.此时画笔宽度属性还没有反应到预览框中,简单,修改下CPreview的OnPaint函数:测试下调整画笔宽度时预览窗的变化吧。2.还差件事情:让画笔宽度影响绘制的图形。简单,修改View类的OnLButtonDown函数:大功告成,测

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。