BOOL WINAPI GetMessage(//阻塞型函数
_Out_ LPMSG lpMsg,
_In_opt_ HWND hWnd,
_In_ UINT wMsgFilterMin,
_In_ UINT wMsgFilterMax
);
while( (bRet = GetMessage( &msg, hWnd, 0, 0 )) != 0)
{
if (bRet == -1)
{
// handle the error and possibly exit
}
else
{
//注掉会导致死循环
//TranslateMessage(&msg);
//DispatchMessage(&msg);
}
}
在调用GetMessage的线程的消息队列中取得与它相关窗口的消息放在一个消息结构后就返回。如果没有消息发送到此函数第二个参数所代表的窗口,也没有对这个线程的消息,操作系统会挂起这个线程(一旦有消息到达,进程会被唤醒,GetMessage马上返回)。放出这个线程的cpu控知权。所以cpu占有不是100%。
上面循环里面的代码屏蔽掉后, 是一个死揗环,这样没有用任何
方式告訢系统你要交出控知权,所以你会在这个线程的时间段里一直占用。直到此线程此轮的时间片用完。由系统强行切换别的线程执行。