我想在将消息发送到窗口过程之前读出消息循环中的消息。我尝试像这样阅读的大多数消息都被正确读取,但是当我关闭窗口时,无法读取WM_CLOSE
或WM_DESTROY
消息,好像它们从未收到过一样。这就是我所做的:
void Framework::Run(){
while(running){
MSG msg;
while(PeakMessage(&msg, NULL, 0, 0)){
TranslateMessage(&msg);
switch(msg.message){
case WM_DESTROY:
PostQuitMessage(0);
break;
case WM_QUIT:
running = false;
break;
//...other cases...
}
DispatchMessage(&msg);
}
//...
}
}
我在第一种情况下设置了一个断点,但即使我关闭窗口(通过单击“X”),断点也不会被命中。但是,当我WM_DESTROY
在窗口过程中检查时,它会被读取并且一切正常。为什么不在外面呢?
此类消息是否直接发送到窗口 proc?如何?