第十二章 Windows程序设计初步 本章主要内容 1. Windows窗口程序的基本结构 2. Windows程序的消息驱动机制 3. Windows程序从启动到结束的过程
16:55:00 第十二章 Windows程序设计初步 本章主要内容 1. Windows窗口程序的基本结构 2. Windows程序的消息驱动机制 3. Windows程序从启动到结束的过程
例:简单的 Windows窗口程序 > Windows窗口程序的结构 WinMain0函数: Window:程序的入口点 函数原型为: int APIENtRY WinMain (HINSTANCe hInst HINSTANCE hPrevInst LPSTR lpCmdLine int sHow Cmd) WndProc函数:窗口函数 函数原型为: LRESULT CALLBACK函数名( HWND hWin, UINT uMsg WPARAM wPrm LPARAM 1Prm)
16:55:00 例:简单的Windows窗口程序 .WinMain()函数:Windows程序的入口点 函数原型为: int APIENTRY WinMain(HINSTANCE hInst, HINSTANCE hPrevInst, LPSTR lpCmdLine, int nShowCmd); .WndProc函数:窗口函数 函数原型为: LRESULT CALLBACK 函数名(HWND hWin, UINT uMsg, WPARAM wPrm, LPARAM lPrm); ➢Windows窗口程序的结构
例:另一个 Windows窗口应用程序 Window程序中的窗口由程序员创建,创建窗口之前必须向系统说 明窗口的属性与该窗口能表现出的行为—向系统注册窗口类 数据结构: WNDCLASS 说明窗口的属性与行为,以供注册窗口类时使用 typedef struct -WNDCLASS UINT style, WNDPRoC lpfnWndProc int cbClsextra: int cbWndExtra: HINSTANCE hInstance hicon hicon: CURSOr cUrsor, HBRUSH hbrBackground; LPCtSTR lpszMenuName LPCTSTR lpszClassName WNDCLASS, *PWNDCLASS
16:55:00 例:另一个Windows窗口应用程序 .Window程序中的窗口由程序员创建,创建窗口之前必须向系统说 明窗口的属性与该窗口能表现出的行为 -- 向系统注册窗口类 .数据结构:WNDCLASS 说明窗口的属性与行为,以供注册窗口类时使用 typedef struct _WNDCLASS{ UINT style; WNDPROC lpfnWndProc; int cbClsExtra; int cbWndExtra; HINSTANCE hInstance; HICON hIcon; HCURSOR hCursor; HBRUSH hbrBackground; LPCTSTR lpszMenuName; LPCTSTR lpszClassName; }WNDCLASS, *PWNDCLASS;
6:55A00 Windows中的消息 Windows程序是事件驱动的,发生一个事件时,系统以消息 的形式通知给应用程序,应用程序再来处理(如何处理该事 件由程序员编写的代码指明) 消息是一种数据结构,由如下结构体定义: typedef struct tagMSG HWND hwnd UINT message) WPARAM wParam: LPARAM IParam; DWORD time: POINT pt MSG,*PMSG;
16:55:00 Windows中的消息 Windows程序是事件驱动的,发生一个事件时,系统以消息 的形式通知给应用程序,应用程序再来处理(如何处理该事 件由程序员编写的代码指明) 消息是一种数据结构,由如下结构体定义: typedef struct tagMSG{ HWND hwnd; UINT message; WPARAM wParam; LPARAM lParam; DWORD time; POINT pt; }MSG, *PMSG;
6:55:00 消息队列与消息循环 消息队列 Windows中的窗口程序都有一个消息队列,在该窗口上发生 某些事件时,消息进入该窗口的消息队列排队,等待程序 处理 消息循环 WinMaino函数中后面的 while循环就是消息循环 MSG ms gMes sage, while(GetMessage(&msgMes sage, NULL, 0, 0) Trans lateMessage(&ms gMes sage) DispatchEs sage( &ms gMes sage) 其作用就是不断从消息队列中取出消息,经过解释,分发给 窗口函数 WndProc0去处理,直到从消息队列中取出的消息的 标识为W_QUIT,消息循环结束,整个应用程序随之结束
16:55:00 消息队列与消息循环 .消息队列 Windows中的窗口程序都有一个消息队列,在该窗口上发生 某些事件时,消息进入该窗口的消息队列排队,等待程序 处理 .消息循环 WinMain()函数中后面的while循环就是消息循环 MSG msgMessage; while(GetMessage(&msgMessage,NULL,0,0)){ TranslateMessage(&msgMessage); DispatchMessage(&msgMessage); } 其作用就是不断从消息队列中取出消息,经过解释,分发给 窗口函数WndProc()去处理,直到从消息队列中取出的消息的 标识为WM_QUIT,消息循环结束,整个应用程序随之结束