下面是我的邮件过滤器:
bool MyFilter::PreFilterMessage(Message %m){
switch(m.Msg){
case WM_CLOSE:
case WM_DESTROY:
case WM_NCDESTROY:
case WM_QUIT:
Debug::WriteLine(L"Gone!");
break;
case WM_MOUSEMOVE:
Debug::WriteLine(L"A mouse! Catch! Catch!!! CATCH!!");
break;
}
return false;
}我验证了我过滤大多数消息都没有问题。但是,在单击窗口的关闭按钮(WM_CLOSE、WM_DESTROY、WM_NCDESTROY和WM_QUIT)后,我没有收到任何发送的消息。为什么会这样呢?
发布于 2009-03-24 19:11:49
仅对消息队列中的消息调用IMessageFilter.PreFilterMessage()。像WM_CLOSE这样的消息通过SendMessage()直接发送到WndProc(),它们绕过了队列。你也不会收到像WM_ACTIVATE,WM_GETTEXT这样的消息。输入事件,仅此而已。
https://stackoverflow.com/questions/677236
复制相似问题