消息机制
消息机制:
消息循环
WM_QUIT : GetMessage()收到改消息时返回0, 退出消息循环
将消息放到各个应用程序消息队列
DispatchMessage--->操作系统--->回调函数--->返回值交给系统--->系统交给DispatchMessage()返回
返回值
return msg.wParam; // 程序结束时 msg 中存放的还是 WM_QUIT 消息,返回的是 WM_QUIT 中的 wParam 成员
回调函数
return DefWindowPorc(hwnd, message, wParam, lParam); // 将其他消息默认处理
消息队列是FIFO的形式
WM_PAINT, WM_TIMER和WM_QUIT这三个消息是特例,操作系统会把他们时刻放在消息队列最后
消息细分为队列化消息和非队列化消息:非队列化消息会越过消息队列,例如:
CreateWindow():发送的非队列消息
WM_GETMINMAXINFO
WM_NCCREATE
WM_NCCALCSIZE
WM_CREATE
ShowWindow():发送的非队列消息
WM_SHOWWINDOW
WM_WINDOWPOSCHANGING
WM_ACTIVATEAPP
WM_NCACTIVATE
WM_GETICON
WM_ACTIVATE
WM_IME_SETCONTEXT
WM_IME_NOTIFY
WM_SETFOCUS
WM_NCPAINT
WM_ERASEBKGND
WM_WINDOWPOSCHANGED
WM_SIZE
WM_MOVE
UpdataWindow():发送的非队列消息
WM_PAINT