第3章Windows程序的消息处理.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第3章Windows程序的消息处理

第3章 Windows程序的消息处理 通过实例研究Windows程序中的消息处理的特点 介绍使用AppWizard(程序设计向导)进行Win32程序设计及在此基础上添加功能的方法 介绍消息处理的新思路,为学习使用MFC编程打下基础。 主要内容 3.1 一个使用菜单的程序 介绍Windows程序的组成及使用菜单资源 3.2 程序文件 程序的资源文件和头文件 使用资源程序的组织原理图 3.3 菜单命令处理的新思路 3.4 再探消息处理 3.1 一个使用菜单的程序 假设项目名称为Wnd3。主函数放在WndRect.cpp文件中,窗口函数仍然使用与上一章相同的名称并放在WndProc.cpp文件中。WndRect.h 主程序使用的头文件 WndProc.h 窗口函数使用的头文件 WndRect.rc 定义菜单资源文件,它与窗口函 数一样,也使用WndProc.h文件 这个程序的结构如图3.1所示。 图3.1 文件结构图 现在在文件WndRect中定义菜单,在文件WndProc中的回调函数里处理菜单消息。 这个程序的运行图如图3.2所示。 图3.2具有菜单的画矩形程序的运行图 3.1.1 Windows程序的组成 第2章介绍的Windows程序没有使用菜单。Windows把使用的菜单、位图、对话框、光标、图标、工具栏、状态条和字符串等等,都列入资源范畴,并用资源文件描述。所谓资源文件,就是后缀为rc的文件。有专门编译资源文件的编译器,编译生成.res文件。这个文件通过link程序,跟不含资源文件并编译产生的exe文件共同组成新的exe文件。也就是说,资源文件可以单独修改并编译。 图3.3是典型的Windows程序生成过程示意图,图中没有包括目前已经不需要的用户自己定义的部分,例如*.def文件。对Windows程序而言,有些应用程序还需要用C语言编制。 简要解释图中的含义 (1) 源文件可以有多种形式,图中给出使用C文件和汇编的例子。当然,这些文件可能还需要包含必要的头文件或库文件,以便使各个源文件可以分别编译查错,直到生成正确的obj文件。 (2) Windows程序可以使用汇编或其他方式生成的obj文件。 (3) 程序还需要必要的链接库文件,它们和源文件编译的obj文件一起连接成一个不使用资源的exe文件。 (4) 如果需要使用资源,则编制相应的资源文件并由资源编译器编译生成res文件。 (5) 将res文件与exe文件链接成一个可以使用资源的exe文件。 3.1.2 使用菜单资源 这个程序中使用菜单选择画矩形的尺寸,这个菜单就是用来选择的菜单项或命令的一个列表。简单讲,对用户来说就是应用程序命令。 菜单资源定义了在应用程序的菜单条上出现的菜单以及该菜单的菜单项。菜单项可以表示成正文或位图。用户可利用鼠标器或键盘选择一个菜单项,从而告诉应用程序执行什么命令。 当用户选择了一个菜单项时,Windows 便向该窗口函数发送一条含有相应菜单项ID值的WM_COMMAND消息。 1. 定义菜单 用MENU 语句定义菜单。 MENU语句包括菜单名、MENU关键字和由BEGIN(或 { )和END(或 { )关键字包括的一条或多条菜单定义语句。 注意它的写法是先写菜单名,再写关键字MENU。 2. 描述菜单 这个MENU描述包括菜单名、菜单中各菜单项、每个菜单项的菜单标识符、每个菜单项出现的正文或位图及每个菜单项的特殊属性。描述语句有: (1) POPUP语句定义一个弹出式菜单,Windows显示一列菜单项,用户可以从弹出式菜单中选择一项,Windows然后通知应用程序用户的选择。 (2) MENUITEM语句定义菜单项、显示和标识符。当用户选择了一个菜单项,Windows 就通知应用程序用户所作的选择。 要在资源文件中为每一个菜单项定义唯一的整数ID值,最上层菜单不用赋ID值。例如程序的Select_Size菜单。如果菜单里的菜单项又是弹出菜单,也不用赋予ID值。这是因为程序里是按具体菜单项的ID值进行处理的,所以对弹出菜单的处理不是针对弹出菜单,而是针对弹出的具体菜单项。例如用MENU语句定义了一个名叫ExampleMenu的菜单如下: ExampleMenu MENU BEGIN POPUP Edit { MENUITEM &New..., IDM_NEW MENUITEM &Open, IDM_OPEN MEN

文档评论(0)

82393aa + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档