如果使用PeekMessage(&msg, hwnd, 0, 0, PM_REMOVE),当调用postquitmessage(0)后,窗口被关闭,此时hwnd已经无效,那么PeekMessage(&msg, hwnd, 0, 0, PM_REMOVE)将会获取到一个0xa1的消息,这个消息不等于MSG_QUIT, 所以不会跳出循环,正确的做法是
PeekMessage(&msg, 0, 0, 0, PM_REMOVE)
本文解析了使用PeekMessage函数时的一个常见误区:当调用postquitmessage后,若使用已失效的hwnd参数,会导致循环无法正常退出的问题。并给出了正确的解决方法。
如果使用PeekMessage(&msg, hwnd, 0, 0, PM_REMOVE),当调用postquitmessage(0)后,窗口被关闭,此时hwnd已经无效,那么PeekMessage(&msg, hwnd, 0, 0, PM_REMOVE)将会获取到一个0xa1的消息,这个消息不等于MSG_QUIT, 所以不会跳出循环,正确的做法是
PeekMessage(&msg, 0, 0, 0, PM_REMOVE)
4964