1.WinMain() 1)MyRegisterClass(hInstance)//注册窗口类 2)InitInstance()//初始化实例 3) while (GetMessage(&msg, NULL, 0, 0)) // GetMessage从应用程序消息队列取一个消息,当取到WM_QUIT时,返回假 { if (!TranslateAccelerator(msg.hwnd, hAccelTable, &msg))//翻译加速键 { TranslateMessage(&msg);//翻译消息 DispatchMessage(&msg);//分发消息 } }
操作系统向应用程序发送一系列消息,如左键按下和左键抬起,应用程序将通过GetMessage等方法
最终将消息提交到窗口过程(WndProc)指向一个应用程序定义的窗口过程的指针
GDI kernel 不断查看系统消息队列 包括应用程序消息队列
2.typedef struct tagMSG { HWND hwnd; //句柄,表示消息所属的窗口 UINT message; //整数类型,指定了消息的标识符,定义为WM_XXX宏,如WM_MOUSEMOVE... WPARAM wParam; LPARAM lParam; //指定消息的附加信息 DWORD time; POINT pt; //消息投递到消息队列中的时间和鼠标的当前位置 #ifdef _MAC DWORD lPrivate; #endif } MSG, *PMSG, NEAR *NPMSG, FAR *LPMSG;
3.消息宏 1) WM_LBUTTONDOWN WM_LBUTTONUP WM_MOUSEMOVE .... 2) WM_PAINT WM_CREATE WM_CLOSE WM_QUIT WM_DESTROY 3) WM_COMMAND //