Windows界面设计入口CView与CDC类.docVIP

  1. 1、本文档共14页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Windows界面设计入口CView与CDC类 §1 Windows应用软件系统结构 一.Windows应用程序结构 Visual C++产生的Windows应用软件系统具有如图2-1所示的分层结构。图中箭头表示了对象间的消息流向。这里应用对象是依据设计要求进行了一系列的对象初始化工作(如文档对象,主框架对象的建立与初始)。文档对象主要用于对整个应用软件系统运行中的各种文件进行有格式的操作处理。由于一个应用对象可以有多个文档对象,所以在应用中采用一个文档对象模板来指明当前的文档对象。如果说应用对象与文档对象主要在内线运行的话,那么主框架对象则是人们可通过屏幕观察到其存在的了。在视觉上的主框架对象就是Windows的GUI界面中包含一个视窗、工具栏、状态栏等在内的GUI界面部分。 从面向对象技术的观点上来看,主框架对象就如同一个包容器,人们所见到视窗、工具栏、状态栏都是主框架对象包容的一个个独立对象。 二.Windows应用软件系统内的消息传送机制   每个Windows应用软件系统都有一个公共的启动程序名为WinMain(位于WinApp.CPP中)。由这个程序(通过调用InitInstance函数)初始一个应用对象又称为建立一个APP的实例。这个初始过程如同下象棋时的布局,将APP 内所内含的各个对象初始到位后便转入一个Run函数静候外部事件的发生。   外部事件可以是来自硬件的中断、数据的I/O、也可以是发自软件(即另外的工作进程)的消息请求。在Visual C++集成系统中对来自硬件的标准事件(即Windows认定的硬件信号)有一整套编码标识,所以Windows 应用软件系统中对象间消息机制可描绘成如下的结构:                映射    传递     外部事件───→消息───→对象 三.Windows的消息   按消息的产生来源,Visual C++集成系环境将消息化分为三大类。 ⒈信息消息 这类消息的作用主要是产生各种提示、请求和说明信息。 按来源可有Windows自身和用户定义的两大分支。凡由Windows自身发出的消息都以WM_为前缀(但并非以WM_为前缀的消息都是信息消息。这种消息的体现以联机帮助最能说明问题了。 ⒉命令消息 这类消息一般是由外部的事件激发的。如单击了鼠标左钮、选中了某个菜单项、单击了工具栏中的某个按钮或按了某组快捷键等。凡是Windows已定义的命令消息仍以WM_开头, 如WM_LBUTTONDOWN消息就表示出现了一个单击鼠标左钮的事件。 ⒊控制消息   这类消息通常是依据某种操作规程(或流程)而发生的事件所导致的。如编辑文档时所规定的光标移动、插入状态的改变、从列表框中进行的选择或在某个对话框中单击了某个按钮都会产生控制消息。最为典型的是在Windows 任何一种编辑器中(如Word, Notepad, Write 等),如果修改了一个字符后都会产生一个EN_CHANGE的控制消息发向其基类对象。当用户退出时,这个基类对象就向与用户直接交互的CView对象发出命令消息便会导致一系列规范化的动作的发生。 四.Windows应用软件系统中的消息映射   上述三种消息都是来自于不同种类的事件。每个消息都有一个固定的符号名。在进行Windows界面程序设计时,设计者必须了解应当在何时、何地插入何种消息。显然这是一件十分困难的事情。所以Visual C++ 集成系统便依据每个应用中各个对象的责任范围来圈定一些消息符号(即缩小选择面),设计者可根据需要将这些消息与对应的对象(更具体就是成员函数)联系在一起。这个过程便称为消息映射。当然在程序中,这个过程会产生非常明确的编码体制,称为消息映射宏体。消息映射宏体的格式为: BEGIN_MESSAGE_MAP(可接收本消息的类名,可接收本消息的基类名)       消息映射宏语句   END_MESSAGE_MAPC( ) 在设计中当需要插入消息映射时,Visual C++集成系统中的一个称为ClassWizard(后面将有篇幅专述)的工具会自动将对应的消息映射宏体插入到程序的恰当位置,(一般是在全程区的对象动态定义宏之后)。通常也不需要设计人员去直接改动。同时该工具会在相应的Class声明中插入一条DECLARE_MESSAGE_MAP()的宏声明与之配套。该宏体中的第一个参数表示可接收本消息的类名,即为该消息的接收对象类。第二个参数表示可接收本消息的基类名是指当第一参数描述的类中没有安排相应的成员函数时,该消息将转发的基类名。这个机制告诉我们,消息一旦发出,必须要有接收者,绝不能有去无回。而MFC 中的所有基类都含有对应各种可能发来的消息的响应函数(非抽象的)。 五.消息映射宏语句   插在消息映射宏体内的消息映射宏语

文档评论(0)

精华文档888 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档