第三章 编写Windows应用程序.ppt

  1. 1、本文档共31页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
* * ○消息驱动机制 消息(Message)就是关于发生事件的信息。 从程序的观点度看,消息驱动就是由消息来驱动/响应某个函数,消息驱动程序设计是围绕着消息的产生与处理而展开的。而DOS程序则是过程驱动的。 Windows系统中已预定义了7000多条消息,用户可在VC的winuser.h中找到这些消息宏定义。 如:#define WM_MOUSEMOVE 0x0200 //Mouse移动 #define WM_LBUTTONDOWN 0x0201 //Mouse左键按下 Windows消息的类型: 1、? KB消息;2、Mouse消息;3、系统消息; 1~3的系统预定义消息取值范围为0x0000~0x03ff和0x8000~0xbfff4(Windows系统保留使用)。 3.1 Windows程序的特点 4、用户自定义消息 内部消息:0x0400~0x7fff 如:#define WM_USER 0x400 外部消息:0xc000~0xffff ○图形设备接口 GDI(图形设备接口:Graphical Device Interface)与设备驱动程序实现了与设备无关的操作。(见图所示) 图:图形设备接口 图中,DC(设备环境/设备上下文:Device Context)是物理设备(如显示器、打印机等)的逻辑模型,GDI是DC和设备驱动程序之间的隔离层(或叫做抽象接口)。 应用程序 DC GDI 设备驱动程序 物理硬件 图形物理设备 在MFC程序设计中,文字和图形的输出可由CDC和CgdiObject类的相关成员函数实现。 ○基于资源的程序设计 ○动态链接库技术 许多Windows应用程序广泛采用DLL(动态链接库:Dynamic Linking Library)技术。DLL的实质是一个可执行模块,但它本身不能自己运行,使用时将它驻留内存由其它应用程序调用,使用完毕可将其从内存中释放。 *.DLL文件的位置可以是: 1、? Windows/System文件夹 2、? PATH所指定的文件夹 3、? 当前应用程序所在的文件夹 Win32 OS中,有三个动态链接库构成了Win32 API的核心: 1、? USER32.DLL 负责窗口管理,包括:消息、菜单、光标、通信、定时器及其它控制显示窗口的函数。 2、? GDI32.DLL 管理用户界面的生成和图形绘制,主要包括设备环境、字体、位图等。 3、? KERNEL32.DLL Windows的核心,它管理内存调度、进程调度等底层功能。 扩展的DLL如OPENGL32.DLL(它有15个基本3D API函数),许多厂商以OPENGL32为基础开发出了自己的特色产品,比较著名的有:3D Studio MAX动画制作软件、Open Inventor仿真软件、ProEngineer CAM软件、ARC Info GIS软件。 ○多任务机制 Windows中多任务机制使用进程(Process)和线程(Thread)的概念。 ○内存管理技术 MS DOS和Windows3.2等16Bit操作系统使用分段体系结构进行内存管理。Win32(Windows 95及以上版本)采用线性体系结构进行内存管理。 开始 生成应用程序对象 WinMain 初始化实例 CWinApp::Initinstance CWinApp::Run Message Pump WM_QUIT? 退出应用程序 CWinApp::ExitInstance 结束 消息循环 3.2 MFC Windows应用程序典型执行顺序流程图 开始 有可用的 消息吗? 空闲处理 有可用的 消息吗? 有空闲 任务吗? 等待直到产生消息 CWinThread::PumpMessage Get/Trans/DispatchMessage Y Y Y N N N 图:MFC Windows消息循环执行顺序流程图 MFC Windows消息循环由CWinApp::Run函数实现,消息循环执行顺序见图所示。 在MFC Windows应用程序中,必须正确地建立消息处理机制。 (一) 建立消息处理机制步骤如下(可归纳为三步曲): 1、? 声明消息映射 若希望能进行消息处理的类具有接收消息的能力,需要在该类的末尾加入消息映射说明。 格式:DECLARE_MESSAGE_MAP() 2、? 建立消息与处理函数之间的映射 格式:BEGIN_MESSAGE_MAP(子类名,父类名) //消息映射宏定义或消息映射语句(根据使用消息的多少,一般有若

文档评论(0)

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

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

版权声明书
用户编号:8124126005000000

1亿VIP精品文档

相关文档