




已阅读5页,还剩4页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第二章 应用程序基本结构与运行方式l 管理模式窗口的构造由应用程序完成,但窗口的管理由应用程序和Windows系统共同协作实施。l 事件驱动模式 事件驱动应用程序在设计过程中围绕事件进行,并通过事件产生的消 息驱动相应的处理函数(过程)完成操作过程。所谓消息是描述事件发生的信息。例如:鼠标键按下或者键盘产生键编码输出的信息。因此这种类型的程序的执行顺序取决于事件发生的顺序,或者说由消息的产生决定。21 消息211组织结构Windows消息由消息号和参数两个部分组成。1消息号Windows操作系统通过32位整数标识一条Windows消息,称为消息号。Windows消息的消息号具有以下三个特点:(1) 唯一性唯一性是指对于Windows操作系统中的每一条消息存在且只存在一个消息号与之相对应。(2) 直观性消息号在形式上表现为消息名。例如:WM_LBUTTONDOWN直观地反映了单击所产生的消息。 (3) 可自定义 Windows系统定义了一系列的消息号和消息名,程序员可以使用这些系统消息,也可以使用自定义的窗口的消息。其形式如下: #define 消息名 消息号在消息号的定义中通常采用如下形式:WM_USER+n例如消息名为“MESSAGE_1”和“MESSAGE_2”可采用如下形式:#define MESSAGE_1 WM_USER+1#define MESSAGE_2 WM_USER+22参数 Windows的消息具有以下两参数:(1) 字参数(wParam)(2) 长参数(lParam)字参数和长参数都是32位整数,用于提供消息号的附带信息,是消息传递过程中的参数的载体。212 分类宏观上按消息的产生可将消息分为以下四种:1 外界输入事件产生的消息。2 Windows系统向应用程序发送的消息。3 应用程序之间发送的消息。4 其他。根据消息产生的具体对象,可进一步将消息分为:1 窗口管理消息。2 初始化消息。3 输入消息。4 系统消息。5 剪贴板消息。6 系统信息消息。7 控件处理消息。8 控件通知消息。9 滚动条消息。10 非用户区消息。11 MDI消息。12 DDE消息。13 应用程序自定义的消息。213 常用消息1 WM_LBUTTONDOWN产生:单击参数:wParam:包含一个整数值,以标识鼠标键按下的状态。lParam:低位字包含当前光标的X坐标,高字节包含当前光标的Y坐标。相似的消息有:WM_LBUTTONUP:放开鼠标左键时产生。WM_RBUTTONDOWN:单击时产生。WM_RBUTTONUP:放开鼠标右键时产生。WM_LBUTTONDBLCLK:双击时产生。WM_RBUTTONDBLCLK:双击鼠标右键时产生。2 WM_KEYDOWN产生:按下一个非系统键时产生。参数:wParam:按下虚拟键的键码。lParam:按键的重复次数,扫描码,转移代码,先前键的状态等信息。相似的消息有:WM_KEYUP: 放开非系统键时产生。3 WM_CHAR产生:按下一个非系统键时产生。参数:wParam:按键的ASCII码。lParam:按键的重复次数,扫描码,转移代码,先前键的状态等信息。4 WM_CREATE产生:由CreateWindow函数发出。参数:wParam:未用。lParam:包含一个指向CREATESTRUCT数据结构指针,该结构是传递给CreateWindow函数的参数的副本。5 WM_CLOSE产生:关闭当前窗口时产生。参数:wParam:未用。lParam:未用。6 WM_DESTROY产生:消除窗口时由Destroyindow函数发出。参数:wParam:未用。lParam:未用。7 WM_QUIT产生:退出应用程序时由PostQuitMessage函数发出。参数:wParam:含有退出代码,退出代码标识应用程序退出运行时的有关信息。lParam:未用。214 消息队列应用程序对消息的管理通过消息对队实现。如图所示: 22 应用程序的基本框架包括以下三个部分:1 Windows数据结构和数据类型。2 入口函数WinMain。3 窗口函数。221 数据结构和数据类型1数据类型常用数据类型及说明如下: 数据类型 说明 BYTE 8位无符号整数 WORD 16位无符号整数 LONG 32位有符号整数 DWORD 32位无符号整数 HANDLE 句柄 UINT 32位无符号整数 FLOAT 32位有符号浮点数 BOOL 布尔值 LPTSTR 指向字符串的32位指针 LPCTSTR 指向字符串的32位常量指针常用句柄类型及其说明: 类型 说明 HWND 标识窗口句柄 HDC 标识设备环境句柄 HINSTANCE 标识当前实例句柄 HBITMAP 标识位图句柄 HCURSOR 标识光标句柄 HICON 标识图标句柄 HFONT 标识字体句柄 HMENU 标识菜单句柄 HBRUSH 标识画刷句柄2数据结构(1) MSG数据结构 结构MSG中包含一个完整的消息信息结构,是消息发送的格式,也是Windows编程中最基本的数据结构之一,定义如下:typedef struct tagMSG HWND hwnd;/接收消息的窗口句柄 UINT message;/消息号 LPARAM lparam;/包含消息的附加信息 WPARAM wparam;/ 包含消息的附加信息 DWORD time;/传送消息的时间 POINT pt;/传送消息时的光标位置 MSG; (2)WNDCLASS数据结构结构WNDCLASS包含一个窗口类的全部信息,也是Windows编程中使用的基本数据结构之一。应用程序通过定义一个窗口类确定一类窗口的属性,其定义如下:typedef struct tagWNDCLASS UNIT style;/窗口类的风格 WNDPROC lpfnWndProc;/指向窗口函数的指针 Int cbClsExtra;/分配在窗口类结构后的字节数 Int cbWndExtra;/ 分配在窗口实例后的字节数 INSTANCE hinstance;/定义窗口类的应用程序的实例句柄 HICON hIcon;/ 窗口类的图标 HCURSOR hCursor;/ 窗口类的光标 HBRUSH hbrBackground;/ 窗口类的背景刷 LPCTSTR lpszMenuName;/ 窗口类菜单资源名 LPCTSTR lpszClassName;/ 窗口类名 WNDCLASS; (3) POINT数据结构POINT结构定义了屏幕上或窗口中的一个点的X,Y坐标。POINT结构也是应用程序中最常用的结构之一,其定义如下:typedef struct tagPOINT LONG x; LONG y; POINT; (4) RECT数据结构 RECT结构定义了一个矩形区域,其中包含该矩形区域的左上角和右下角两个点的X,Y坐标。其定义如下:typedef struct tagRECT LONG left; LONG rigth; LONG top; LONG bottom; RECT; (5)CREATESTRUCT数据结构CREATESTRUCT结构中包含应用程序窗口的初始化参数,其定义如下:typedef struct tagCREATESTRUCT LPVOID lpCreateParams;/指向窗口创建数据的指针 HINSTANCE hInstance;/标识拥有该窗口的模块 HMENU hMenu;/ 标识该窗口所采用的菜单 HWND hwndParent; / 标识该窗口的父窗口 int cy; / 标识该窗口的高度 int cx; / 标识该窗口的宽度 int y; / 标识窗口左上角y轴坐标 int x; / 标识窗口左上角x轴坐标 LONG style; / 标识窗口类型 LPCTSTR lpszName; / 标识窗口类名称 LPCTSTR lpszClass; / 标识窗口类名 DWORD dwExStyle; / 标识窗口的扩展类型 CREATESTRUCT;222 入口函数WinMainWinMain函数是Windows应用程序的主体,称为应用程序的入口函数。实现以下功能:1 调用初始化函数,注册窗口类,建立窗口及执行任何其它必要的初始化工作。2 创建并启动消息循环,根据从应用程序消息队列接受的消息并将消息发往相应的消息处理函数。3 当检索到WM_QUIT消息时终止程序运行。WinMain函数有三个基本组成部分:函数说明,程序初始化和消息循环。1函数说明int WINAPI WinMain( HINSTANCE hInstance, /应用程序当前实例句柄 HINSTANCE hPrevInst, /应用程序其它实例句柄 LPSTR lpszCmdLine, /指向程序命令行参数的指针 Int nCmdShow/窗口显示方式的整数值标识 )2程序初始化 (1)窗口类定义 每一个窗口类必须经过注册(调用RegisterClass)才可使用。窗口 类定义通过给窗口 类数据结构WNDCLASS赋值完成,应用程序在为数据结构WNDCLASS赋值过程中常调用以下函数:l HICON LoadIcon(HINSTANCE hInstance,LPCTSTR lpIconName)l HCURSOR LoadCursor(HINSTANCE hInstance, LPCTSTR lpCursorName)l HBRUSH GetStockObject(int nBrush) (2) 注册窗口类 窗口类的注册由函数RegisterClass()实现,其形式为:l RegisterClass(&wndclass) (3)创建窗口实例 由函数CreateWindows()实现。在实际应用中,可以定义组合式的窗口风格,例如:WM_HSCROLL|WM_VSCROLL|WM_POPUP(4)显示窗口应用程序调用ShowWindow函数在屏幕上显示窗口:l ShowWindow(hwnd,nCmdshow); 显示窗口后,应用程序常常调用UpdateWindow()函数更新并绘制用户区,同时发出WM_PAINT消息。l UpdateWindow(hwnd) 3消息循环 启动消息循环的常见格式如下: MSG Msg; while( GetMessage(&Msg,NULL,0,0) TranslateMessage(&Msg); DispatchMessage(&Msg); l GetMessage(lpMSG,hwnd,nMsgFilterMin, nMsgFilterMax);l TranslateMessage(lpMAG);l DispatchMessage(lpMSG);223 窗口函数 窗口函数
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 安全教育知识培训方案课件
- 农业无人机租赁平台运营模式创新与竞争力提升研究
- 农业废弃物资源化利用项目技术改造路径研究报告
- 理财行业面试题库及答案
- 农业产业强镇资金申请报告:2025年政策导向与产业协同发展
- 农业产业园项目2025年市场机会分析与效益评估报告
- 婴幼儿配方食品营养配方优化与婴幼儿听力保护研究报告
- 太阳能光伏发电技术前瞻研究报告
- 安全教育培训记录与监理课件
- 新能源行业2025年危机公关法律法规解读
- 2025全国企业员工全面质量管理知识竞赛试题及答案
- DB4419T 23-2024 建设工程施工无废工地管理规范
- IInterlib区域图书馆集群管理系统-用户手册
- EnglishDrama英语戏剧写作及表演技巧课件
- DB11T 827-2019 废旧爆炸物品销毁处置安全管理规程
- 社会组织管理概论全套ppt课件(完整版)
- 轧机设备安装施工方案
- (完整版)IATF16949新版过程乌龟图的编制与详解课件
- 制药企业仓库温湿度分布的验证
- 满堂脚手架工程施工方案
- GB∕T 3099.4-2021 紧固件术语 控制、检查、交付、接收和质量
评论
0/150
提交评论