Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net WM_销毁,WM_关闭旁路IMessageFilter_.net_Windows_Winforms_Message Queue_Imessagefilter - Fatal编程技术网

.net WM_销毁,WM_关闭旁路IMessageFilter

.net WM_销毁,WM_关闭旁路IMessageFilter,.net,windows,winforms,message-queue,imessagefilter,.net,Windows,Winforms,Message Queue,Imessagefilter,下面是我的邮件过滤器: 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::Writ

下面是我的邮件过滤器:

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\u close
WM\u DESTROY
WM\u NCDESTROY
WM\u QUIT
)。这是为什么?

IMessageFilter。仅对消息队列中的消息调用PreFilterMessage()。WM_CLOSE之类的消息通过SendMessage()直接发送到WndProc(),它们绕过了队列。您也不会得到诸如WM_ACTIVATE、WM_GETTEXT等消息。仅此而已。IMessageFilter.PreFilterMessage()仅对消息队列中的消息调用。WM_CLOSE之类的消息通过SendMessage()直接发送到WndProc(),它们绕过了队列。您也不会收到诸如WM_ACTIVATE、WM_GETTEXT等消息。仅此而已。WM_LBUTTONDOWN呢?我在哪里可以找到哪些消息被直接发送到WndProc,哪些消息被发布到消息队列?WM_LBUTTONDOWN通常是发布的,而不是发送的。这取决于生成消息的代码。那么WM_LBUTTONDOWN呢?我在哪里可以找到哪些消息被直接发送到WndProc,哪些消息被发布到消息队列?WM_LBUTTONDOWN通常是发布的,而不是发送的。这取决于生成消息的代码。