关于消息循环的问题

来源:百度知道 编辑:UC知道 时间:2024/07/04 13:55:07
winmainproc(){
while(getMessage(&msg,null,0,0))
{
translateMessage(&msg);
DispatchMessage(&msg);
}
}
getmessage获得的是这个线程的消息还是整个进程的消息???

函数功能描述:从调用线程的消息队列中取出消息并将其放入MSG结构。该函数可取得与指定窗口相关的消息和通过PostThreadMessage函数所张贴的线程消息。

.函数原型:
BOOL GetMessage(
LPMSG lpMsg, // 消息结构地址
HWND hWnd, // 窗口句柄
UINT wMsgFilterMin, // 起始消息值
UINT wMsgFilterMax // 结束消息值
);

.参数:
lpMsg :指向MSG结构的指针,该结构从线程的消息队列中接收消息信息。
hWnd :被检索消息的窗口句柄。它有一个有特殊含义的值——NULL:GetMessage将接收任何属于调用线程窗口的消息,线程消息是通过PostThreadMessage函数发到调用线程的。
wMsgFilterMin:指定接收的最小消息值的整数。
wMsgFilterMax:指定接收的最大消息值的整数。

.返回值:
如果函数接收了一个非WM_QUIT的其他消息,返回非零值。
如果函数接收了WM_QUIT消息,返回值是零。
如果出现了错误,返回值是-1。例如,当hWnd是无效的窗口句柄或lpMsg是无效的指针时,函数失败。获得更多的错误信息,请调用GetLastError函数。

.备注:
应用程序通常使用返回值来确定是否终止主消息循环并退出程序。
GetMessage只接收由参数hWnd标识的窗口或其子窗口相关的消息,子窗口由IsChild函数来决定,消息值的范围由参数wMsgFilterMin和wMsgFilterMax给出。如果hWnd值为NULL,则GetMessage接收任何属于调用线程窗口的消息,线程消息是通过PostThreadMessage函数发到调用线程的。GetMessage函数不接收属于其他线程的窗口消息和除了