- 1、本文档共119页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
使用CScrollView创建滚动视图比较简单,只需要如下几个步骤就可以创建一个具有滚动功能的视图:(1)使用CScrollView作为应用程序视图类的基类。在使用AppWizard创建应用程序框架时,从“MFCAppWizard-Step6of6”对话框(如图8-7所示)的“Baseclass”基类列表框中选择视图类的基类为CScrollView。(2)编辑应用程序视图类中重载的OnInitialUpdate,通过调用SetScrollSizes来指定滚动视图的逻辑大小。在AppWizard生成的应用程序框架中调用SetScrollSizes将视图的逻辑宽度和高度设置为100个像素。通常可以将滚动视图的大小设置成一个比较大的固定尺寸。如果需要根据文档的大小来设置滚动视图的大小,则可以调用应用程序中文档类的一个成员函数来获取文档的大小,例如通过GetMyDocSize(自定义成员函数,用于返回文档的CSize大小),可以用以下方式根据文档大小设置滚动视图的大小:SetScrollSizes(nMapMode,GetDocument-GetMyDocSize());函数SetScrollSize的原型为:voidSetScrollSizes(intnMapMode,SIZEsizeTotal,constSIZEsizePage=sizeDefault,constSIZEsizeLine=sizeDefault);其中,参数“nMapMode”用于指定视图的映射模式,它可以是除MM_ISOTROPIC和MM_ANISOTROPIC外的所有其它映射模式;参数“sizeTotal”用于指定滚动视图的逻辑尺寸;参数“sizePage”用于指定单击滚动条的空白区域时水平方向和垂直方向上滚动的量;参数“sizeLine”用于指定单击滚动条箭头时的滚动量。SetScrollSizes的第一个参数中指定的映射模式确定了后面三个参数的单位。当调用OnDraw时,映射模式已经设置成了在SetScrollSizes中指定的映射模式,因此在实现OnDraw时不必再调用SetMapMode了。(3)在视图类中实现OnDraw。在CScrollView中实现OnDraw的方法与在CView派生类中完全相同。除非希望优化滚动操作,否则OnDraw基本不需要特殊的逻辑来支持滚动。(4)在程序输出中注意设备坐标与逻辑坐标的转换。如在鼠标消息处理函数中一般使用CClientDC获取设备环境,鼠标指针的坐标是设备坐标。而在OnDraw函数中使用的坐标是逻辑坐标,它对应于整个文档。因此在保存文档数据时,要进行相应的坐标转换。用这种方法创建的滚动视图可以自动滚动来响应滚动条消息。它会自动在OnDraw的输出中考虑滚动到的位置。如果视口的尺寸超出窗口的逻辑大小,它会自动隐藏滚动条,并且在滚动条可见时会自动调整滚动条滑块的大小以反映视口与窗口的相对比例大小。在使用CScrollView时应注意如下几点:■如果在视图中的OnDraw函数之外绘制输出,就要调用OnPrepareDC让MFC在输出中考虑映射模式和滚动位置的影响。■如果响应鼠标消息时执行如命中测试等操作,则应使用DPtoLP将鼠标坐标从设备坐标转换为逻辑坐标,从而在操作中考虑到映射模式和滚动位置的影响。■调用SetScrollSizes的位置和次数。如果滚动视图具有固定大小,则只需要在OnInitialUpdate中调用一次。如果需要像MicrosoftWord一样,随着文档中数据的变化来调整滚动视图的大小,则在每次文档数据发生变化时调用SetScrollSizes来改变滚动视图的尺寸是非常合理的。可以在每次调用OnDraw或OnUpdate函数时,重新计算滚动视图的大小,并根据计算结果对滚动视图大小进行重新设置。【例12.4】编写一个SDI应用程序,在滚动视图中绘制一个椭圆,并可以通过鼠标单击改变其颜色。程序创建和编程过程如下:(1)利用AppWizard创建应用程序框架,项目名设置为ScrollSamp。在AppWizard的“MFCAppWizard-Step6of6”对话框(见图8-7)的“Baseclass”基类列表框中选择视图类的基类为CScrollView。(2)在视图类CScrollSampView中增加两个数据成员,分别保存椭圆的外接矩形和颜色,同时在构造函数中进行初始化:private: intm_nColor; CRectm_rec
您可能关注的文档
最近下载
- 采购合同结清证明模板.doc VIP
- 对乡镇领导班子干部成员的批评意见范文.pdf VIP
- 各类骨折病人的体位护理.pptx VIP
- 机动车检测人员试题库(附答案).pdf VIP
- 2025年安徽工业经济职业技术学院单招职业技能测试题库带答案(综合题).docx VIP
- 工学院机械电子工程专业留学生培养方案.docx VIP
- 2025年湖南高速铁路职业技术学院单招职业适应性测试题库及一套完整答案.docx VIP
- 2023年蚌埠市从优秀村(社区)干部中考试录用乡镇机关公务员加分考试真题及答案.pdf VIP
- 【教学创新大赛】《数字信号处理》教学创新成果报告.docx
- 学习领会二十届中央纪委四次全会上重要讲话心得体会.docx VIP
文档评论(0)