消息循环产生来源是:每一个windows程序都维护一个信息列队,在发生输入事件后,windows将事件转化为消息,并放入信息列队中。程序取出消息的循环就叫消息循环。
while(GetMessage(&msg,null,0,0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
msg对应的是MSG结构该结构具有如下6个域:
hwnd程序自身的窗口句柄、message消息信息【是一个数值常量】、wParam消息参数、lParam消息参数、time消息进入时间、pt消息进入列队的鼠标坐标【pt是一个POINT结构体具有x,y2个域】。
接着消息被TrasnlateMessage给windows进行一些转换(以后详细说细节)。
然后DispatchMessage把经过转化的消息给当前窗口程序的处理函数【也就是程序如何处理用户动作的函数】,经过处理后结束DispatchMessage并返回,接着继续下个消息循环。
那程序时怎么处理消息里的动作呢?
LRESULT CALLBACK WndProc(HWND hwnd,UNIT message,WPARAM wParam,LPARAM lParam)
{
switch结构来区分是何种东走并作出反应
}
{
switch结构来区分是何种东走并作出反应
}
具体的机制将在下篇文章介绍

浙公网安备 33010602011771号