- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第9章C框架窗口、文档和视图
第9章 框架窗口、文档和视图 本章要点: 文档/视图应用程序框架的类及其分工合作。 视图类的OnDraw()函数和GetDocument()函数的作用。 单文档应用程序的框架分析。 文档类的Serialize()函数的作用。 新建文档、保存文档和打开文档的函数调用流程。 多文档应用程序框架与单文档应用程序框架的区别。 9.1.1 单文档界面与多文档界面 Visual C++中的MFC库支持3种不同的应用程序:单文档界面(SDI)、多文档界面(MDI)和基于对话框的应用程序。 9.1.2 文档/视图结构 文档/视图结构是在Visual C++中使用MFC开发基于文档的应用程序的基本框架。在这个框架中,数据的维护及其显示分别由两个不同但又彼此紧密相关的类——文档类和视图类负责。文档/视图结构在很多场合与传统的编程方式相比要更有利于应用程序的编写。 在文档/视图结构中,文档的任务是对数据进行管理和维护。数据通常被保存在文档类的成员变量中。在Visual C++中,文档类通过一个称为“串行化”(Serialize)的过程将数据保存到磁盘文件或数据库中。 9.1.2 文档/视图结构 视图类在文档和用户之间起中介作用。视图可以直接或间接地访问文档类的这些成员变量,它从文档类中(而不是从存储介质中)将文档中的数据取出来,然后在屏幕上显示文档的数据。同时,它可以接收用户的输入,并接受用户的修改,通过调用文档和视图的接口将修改的信息反馈给文档类,实际的数据更新仍然是由文档类来完成的。 9.2 框架窗口 框架窗口可分为两类: 一类是应用程序主窗口 另一类是文档窗口 9.2.1 主窗口和文档窗口 主窗口(或称主框架窗口)是应用程序直接放置在桌面(Desktop)上的那个窗口,每个应用程序只能有一个主窗口,主窗口的标题栏上往往显示应用程序的名称。 当用MFC AppWizard创建SDI或MDI的应用程序时,主窗口类的源文件名分别是MainFrm.h和MainFrm.cpp,其类名是CMainFrame。对于SDI程序来说,主窗口类是从CFrameWnd派生而来的,而对于MDI程序,主窗口是从CMDIFrameWnd类派生的。如果应用程序还有工具栏、状态栏等,那么用户的CMainFrame类还含有表示工具栏和状态栏的成员变量m_wndtoolBar和m_wndStatusBar,并在CMainFrame的OnCreate()函数中进行初始化。 9.2.1 主窗口和文档窗口 文档窗口对于SDI程序来说,它和主窗口是一致的,即主窗口就是文档窗口;而对于MDI程序,文档窗口是主窗口的子窗口。 文档窗口一般都有相应的可见边框,它的客户区(除了窗口标题栏、边框外的区域)是由相应的视图来构成的,因此可以说视图是文档窗口的子窗口。 文档窗口时刻跟踪当前处于活动状态的视图的变化,并将用户或系统产生的命令消息传递给当前的活动视图。 9.2.1 主窗口和文档窗口 而主窗口负责管理各个用户交互对象(包括菜单、工具栏、状态栏以及加速键)并根据用户操作相应地创建或更新文档窗口及其视图。 在MDI程序中,MFC AppWizard创建的文档窗口类的源文件是ChildFrm.h和ChildFrm.cpp,其类名是CChildFrame,它是从CMDIChildWnd派生的。 9.2.1 主窗口和文档窗口 9.2.2 窗口风格的设置 在Visual C++中,窗口的风格决定了窗口的外观及功能,用户通过风格的设置增加或减少窗口中所包含的功能,这些功能一般都是由系统内部定义的,不需要用户去编程实现。 窗口风格通常有一般(以WS_为前缀)和扩展(以WS_EX_为前缀)两种形式。它既可以通过MFC AppWizard来设置,又可以通过在主窗口或文档窗口类的PreCreateWindow()函数中修改CREATESTRUCT结构来实现。 1. 用MFC AppWizard设置 MFC AppWizard有一个Advanced按钮,允许用户指定有关SDI和MDI框架窗口的属性。但在该对话框中,用户只能设置少数几种窗口风格。 2. 修改CREATESTRUCT结构 当窗口创建之前,系统自动调用PreCreateWindow()虚函数。在用AppWizard创建应用程序结构时,MFC已经为主窗口或文档窗口类自动重载了该虚函数。用户可以在此函数中通过修改CREATESTRUCT结构来设置窗口的绝大多数风格。 9.2.3 窗口状态的改变 MFC AppWizard为每个窗口设置了相应的大小和位置,但默认的窗口状态有时并不那么令人满意,这时就需要对窗口状态进行适当地改变。 1. 用ShowWindow改变窗口的显示状态 2. 用SetWin
文档评论(0)