GetMessage消息循环

从消息队列里拿消息
BOOL WINAPI GetMessage{
Out LPMSG lpMsg,//一条消息的struct
In_opt HWND hWnd,//窗口句柄,设置为NULL则表示同一条线程内的所有窗口都收到消息
In UINT wMsgFilterMin,//获取消息最小值
In UINT wMsgFilterMax//获取消息最大数,和上面的一起设置为0则表示对消息数不作限制
};
返回值:
大于0:没出错也不退出的消息
等于0:退出WM_QUIT
小于0:出错

示例如下:
LPMSG msg = { 0 };
while (GetMessage(&msg,NULL,0,0))
{
TranslateMessage(&msg);//将虚拟键转换成字符消息
DispatchMessage(&msg);//分发消息给系统,系统找到过程函数指针,通过指针调用过程函数,过程函数得到消息
}
关于TranslateMessage:
在键盘上敲下一个字符后
产生WM_KEYDOWN与WM_KEYUP消息
两个消息包含的参数是虚拟键代码(wParam)和扫描码(lParam)
TranslateMessage生成一条新的消息,这条消息将上面两个消息组合成一条WM_CHAR,其中wParam包含了字符的ASCII码

消息循环的流程
1.系统得到消息,投递到消息队列
2.应用使用GetMessage从消息队列拿消息
3.应用callDispatchMessage让系统知道现在要使用这条消息
4.系统把消息丢给窗口过程函数

**

然而很不幸的是,GetMessage在我游中似乎被抛弃了

**

猜你喜欢

转载自blog.csdn.net/liuyx91/article/details/90142400
今日推荐