第9章 Windows编程基础.ppt
上传人:qw****27 上传时间:2024-09-12 格式:PPT 页数:43 大小:300KB 金币:15 举报 版权申诉
预览加载中,请您耐心等待几秒...

第9章 Windows编程基础.ppt

第9章Windows编程基础.ppt

预览

免费试读已结束,剩余 33 页请下载文档后查看

15 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

第9章Windows编程基础Windows程序设计的基本概念Windows的事件驱动机制Windows应用程序中常见的消息Windows程序设计的基本框架9.1Windows程序设计基本概念本章要点2.Windows程序设计基本概念(1)窗口窗口是应用程序与用户之间交互的接口环境。用户可以通过窗口输入数据,控制应用程序的运行;应用程序可以通过窗口显示数据和状态。(2)对象与句柄对象是指Windows的规范部件,包括各种窗口、菜单、按钮、对话框以及程序模块等。所谓句柄,就是一个唯一的整数值,是一个4字节长的数值,用以标识许多不同的对象类型,如窗口、菜单、内存、画笔、画刷和文件等。由于Windows是一个多任务操作系统,它可以同时运行多个程序或一个程序的多个副本。Windows不仅使用句柄来管理实例,也用它来管理窗口、位图、字体、元文件和图标等系统资源。常见的Windows对象句柄如表9-1所示,所有的句柄类型以H开头。(3)事件驱动Windows应用程序以消息为基础,以事件驱动之。Windows应用程序启动之后将进入一个消息循环,等待系统或应用程序的消息,消息的产生是因为事件发生的结果,Windows程序设计主要围绕编写事件或消息的响应函数上。(4)消息(Message)及其在Windows编程中的应用Windows应用程序是由消息驱动的。Windows系统下每一个应用程序窗口都维护一个消息队列,操作系统接收和管理所有输入消息、系统消息,并把它们发送给相应窗口的消息队列。应用程序初始化完成后,进入消息循环,维护自己的消息队列,从中取出消息,并进行处理。编写消息处理函数是Windows编程的主要工作之一。系统传递给应用程序的消息数据是一个MSG结构体数据类型的数据。消息的功能消息的组成在winuser.h中,消息结构体MSG的定义如下:typedefstructtagMSG//消息{HWNDhwnd;//目标窗口句柄UINTmessage;//消息标识WPARAMwParam;//消息参数1LPARAMlParam;//消息参数2DWORDtime;//消息发送时间POINTpt;//消息发送时鼠标的屏幕坐标}MSG;消息标识message是利用#define宏定义好的消息名标识,是用于区别其他消息的常量值,每个Windows消息都有一个信息值,该值由windows.h头文件中的宏定义来标识。Windows程序和Windows消息处理的基本流程Windows消息分类在Win32中,消息统一由一个MSG结构来描述,每一条消息在消息队列中放置一个MSG结构变量。一般情况下,应用程序只需对结构中的消息类别message、附加参数wParam和lParam三个字段进行判断就可以区别一个消息。系统保留消息标识符的值在0x0000在0x03ff(WM_USER-1)范围。这些值被系统定义消息使用。应用程序不能使用这些值给自己的消息。应用程序消息从WM_USER(0X0400)到0X7FFF,或0XC000到0XFFFF;WM_USER到0X7FFF范围的消息由应用程序自己使用;0XC000到0XFFFF范围的消息用来和其他应用程序通信.WM_NULL---0x0000空消息。0x0001----0x0087主要是窗口消息。0x00A0----0x00A9非客户区消息0x0100----0x0108键盘消息0x0111----0x0126菜单消息0x0132----0x0138颜色控制消息0x0200----0x020A鼠标消息0x0211----0x0213菜单循环消息0x0220----0x0230多文档消息0x03E0----0x03E8DDE消息0x0400WM_USER0x8000WM_APP0x0400----0x7FFF应用程序自定义私有消息消息的传递9.2Windows中的事件驱动Windows中事件产生的消息由系统传递给应用程序,应用程序必须有一个消息循环接收消息和处理相应的消息。消息循环的实现如下:MSGmsg//定义一个MSG类型的变量while(GetMessage(&msg,NULL,0,0))//产生一个消息循环,等待消息的到来{TranslateMessage(&msg);//翻译消息DispatchMessage(&msg);//将消息传递给窗口函数,以便处理相应的消息}9.3Windows应用程序中常见消息2.键盘消息(1)WM_KEYDOWN这是在按下一个非系统键时产生的消息。此外相似的消息还有WM_KEYUP,它是在放开非系统键时产生。(2)WM_CHAR这也是按下一个非系统键时产生的消息。3.关闭窗口消息关闭窗口时产生的消息是W