Windoows窗口程序五

时间:2022-04-27 07:53:48

程序执行机制 过程驱动-程序的执行过程是按照预订好的顺序执行。 事件驱动-程序的执行是无序,,用户可以根据需要随机触发相应的事件。 Win32窗口程序就是采用事件驱动方式执行,也就是消息机制。

当系统通知窗口工作时,就采用消息的方式派发给窗口。 消息组成: 窗口句柄 消息ID 消息的两个参数 消息产生的时间 消息产生时的鼠标位置

//消息结构体 typedef struct tagMSG { HWND hwnd; UINT message; WPARAM wParam; LPARAM lParam; DWORD time; POINT pt; } MSG, *PMSG, *LPMSG;

每个窗口都必须具有窗口处理函数 LRESULT WindowProc( HWND hwnd,//窗口句柄 UINT uMsg,//消息ID WPARAM wParam,//消息参数 LPARAM lParam//消息参数 ); 当系统通知窗口时,会调用窗口处理函数同时将消息ID和消息参数传递给窗口处理函数。 在窗口处理函数中,不处理的消息,使用缺省窗口处理函数,例如DefWindowProc。

//获取消息 BOOL WINAPI GetMessage( LPMSG lpMsg,//存放获取到的消息buffer HWND hWnd,//窗口句柄(如果设置为NULL,表示抓取本进程内所有窗口的消息) UINT wMsgFilterMin,//获取消息的最小ID UINT wMsgFilterMax//获取消息的最大ID ); lpMsg-当获取到消息后,将消息的参数存放到MSG结构中。 hWnd-获取到hWnd所指定窗口的消息 wMsgFilterMin和wMsgFilterMax-只能获取到由他们指定的消息范围内的消息,如果都为0,表示没有范围。

TranslateMessage--翻译消息。将按键消息翻译成字符消息 BOOL TranslateMessage( _In_ const MSG *lpMsg//要翻译的消息地址 ); 检查消息是否是按键消息,如果不是按键消息,不做任何处理,继续执行。

DispatchMessage--派发消息。将消息派发到该消息所属窗口的窗口处理函数上。 LRESULT WINAPI DispatchMessage( _In_ const MSG *lpmsg//要派发的消息 );

WM_DESTROY-窗口被销毁是的消息,无消息参数。常用于在窗口被销毁之前,做相应的善后处理,例如释放资源、内存等。 WM_SYSCOMMAND-系统命令消息,当点击窗口的最大化、最小化、关闭等命令时,收到这个消息。常用于窗口关闭时,提示用户处理。 消息参数:wParam-具体点击位置,例如关闭SC_CLOSE等。 消息参数:lParam-鼠标位置 LOWORD 低字节-水平位置 HIWORD 高字节-垂直位置

Windoows窗口程序五