- 1、本文档共27页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
MsVisualC讲义2屏幕滚动Project
Ms Visual C++讲义——屏幕滚动Project 张正团 山东理工大学电气与电子工程学院 School of Electrical Electronic Engineering,SDUT 在单文档视图上实现屏幕滚动 Document/View的概念 使用文档/视图的意义 将数据操作与数据显示分开。文档专门负责数据的获取和保存,视图负责数据输出与用户界面的交互。 系统为支持文/视结构的应用程序(SDI/MDI)提供了许多标准操作界面,如新建文件、打开文件、保存文件、打印等,减轻用户的工作。 支持打印、打印预览、屏幕滚动。但是文/视结构并非是MFC中必须的,最简单的办法是不去理会AppWizard创建的文档/视图结构,直接在类CMainFrame中编写代码即可。 MFC对象的相互访问方式 文档对象: 视图对象: 文档窗口对象: 主框架窗口对象: 应用程序对象: 文档模板: MFC对象的相互访问方式-1 文档对象: GetFirstViewPosition 、GetNextView 指向文档的视列表的指针; GetDocTemplate 得到文档模板的指针; 成员变量m_pDocTemplate 访问文档模板。 视图对象 -GetDocument 得到指向文档的指针; -GetParentFrame 得到指向文档框架窗口的指针; 文档窗口对象 - GetActiveView 得到当前活动的视; - GetActiveDocument 得到当前活动视的文档; MFC对象的相互访问方式-2 主框架窗口对象 -MDIGetActiveView 得到当前活动的MDI子窗口; 应用程序对象 -m_pMainWnd 访问框架窗口; -OnNewDocument和OnOpenDocument 从文档模板链表中访问文档模板; 文档模板 保存指向CRunTimeClass对象的指针,通过该指针可以访问文档、视图、窗口; MFC对象的相互访问综合 逻辑坐标和设备坐标 逻辑坐标: 即文档坐标。 虚拟空间中的坐标系,与显示器的布局、打印机 等物理设备无关。原点位置不变。8种映射模式。 CDC::GetMapMode(); CDC::SetMapMode(); 设备坐标:即视图窗口坐标。窗口的客户区。 屏幕滚动前后,设备坐标与逻辑坐标的原点关系。 (绝对坐标,相对坐标) 逻辑坐标和设备坐标的转换 Why? 显示的需要。(屏幕滚动前后,二者不一致) How? 坐标转换函数。 CDC::LPtoDP CDC::DPtoLP (此前先调用 CScrollView::OnPrepareDC) 屏幕滚动Project 设计思想:基于所绘图形比视图窗口要大,这样用户只能浏览位于视图窗口的部分图形,通过给窗口添加滚动,来看到全部图形。 实现方法:程序的视图类要从CScrollView中派生,视图类重载虚函数OnInitialUpdate,在此函数中调用SetScrollSize函数初始化滚动相关的尺寸,最后调整好逻辑坐标和设备坐标。 本例制作过程 本例效果:用户可以自行输入文字,超过一屏时,可通过滚动条来浏览。相应键盘消息--PageUp、Pagedown、上箭头、下箭头。 制作步骤之一 制作步骤之二 为类CMyTextDoc增加如下成员变量和成员函数: CSize m_sizeDoc; CStringList lines; int nLineNum; int m_nHeightLine; void GetDocSizes(CSize sizeTotal, CSize sizePage, CSize sizeLine); 制作步骤之三 在类CMyTextDoc的成员函数中初始化成员变量: CMyTextDoc::CMyTextDoc() { // TODO: add one-time construction code here nLineNum = 0; m_nHeightLine = 0; } 添加成员函数GetDocSizes并增加以下代码: void CMyTextDoc::GetDocSizes(CSize sizeTotal, CSize sizePage, CSize sizeLine) //初始化滚动大小 { sizeTotal = CSize( 1000, 1600 ); sizePage = CSize( sizeTotal.cx/10, sizeTotal.cy/10 ); sizeLi
您可能关注的文档
- Apple产品的可用性分析.ppt
- 一般现在时及专项练习.doc
- 移动平均线解析.doc
- 2011年南充中考试题.doc
- 2011考研数学一真题及答案).doc
- 独立柱砼施工技术交底.doc
- 高二地理阶段性检测一.doc
- 模板-业务需求文档-pub.doc
- 初中理科测试.doc
- Henkel NVH Technology Application in Automotive Industry 汉高.pdf
- 华为汽车业务核心竞争力剖析-2025-07-新势力.pptx
- 2025全球汽车供应链核心企业竞争力白皮书.pdf
- 2025粤港「组装合成」模块化建筑跨境贸易指南.pdf
- 3.1 做有梦想的少年(课件) 统编版道德与法治七年级上册.pptx
- 6.1友谊的真谛 课件- 统编版道德与法治七年级上册.pptx
- 4.1家的意味 课件- 统编版道德与法治七年级上册.pptx
- 3.2学习成就梦想 课件- 统编版道德与法治七年级上册.pptx
- 5.1走近老师 课件- 统编版道德与法治七年级上册.pptx
- 5.2珍惜师生情谊 课件- 统编版道德与法治七年级上册.pptx
- 1.1 奏响中学序曲 课件 统编版道德与法治七年级上册.pptx
文档评论(0)