1、消息与队列(在windows中,用户程序可以调用系统的API函数,系统也可以调用用户程序,这是调用时通过消息来进行的。)

(1)消息

MSG结构体定义:

typedef  struct  tagMSG

{

HWND hwnd;              //消息所属窗口

UINT  message;            //消息标识符(WM_XXX宏)

WPARAM  wParam;        //消息附加说明

LPARAM   lParam;        //消息附加说明

DWORD   time;           //消息投递到应用程序队列的时间

POINT     pt;             //鼠标当前位置

}MSG;

(2)消息队列

Windows运行机制:例如按下鼠标左键,产生WM_LBUTTONDOWN消息,系统会将此消息放到窗口所属的应用程序消息队列中,等待应用程序处理(windows会依次将产出的消息放入消息队列)。应用程序通过消息循环不断从队列中取出消息并进行响应。

(3)Windows中包含进队和不进队消息。

2、Winmian函数

Windows 应用程序消息处理过程:

(1)操作系统接收应用程序的窗口消息,将消息投放到应用程序的消息队列中。

(2)应用程序在消息循环中调用GetMessage函数从队列中取出消息,然后进行一些处理。例如TranslateMessage产生新的消息。

(3)应用程序调用DispatchMessage将消息回传给操作系统。

系统利用WNDCLASS结构体中lpfnWndProc成员保存的窗口过程函数指针调用窗口过程函数,对消息进行处理。