当前位置:  开发笔记 > 开发工具 > 正文

WM_DESTROY,WM_CLOSE绕过IMessageFilter

如何解决《WM_DESTROY,WM_CLOSE绕过IMessageFilter》经验,为你挑选了1个好方法。

以下是我的消息过滤器:

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_NCDESTROYWM_QUIT).为什么是这样?



1> Hans Passant..:

IMessageFilter.PreFilterMessage()仅针对消息队列中的消息进行调用.像WM_CLOSE这样的消息通过SendMessage()直接发送到WndProc(),它们绕过队列.您也不会收到WM_ACTIVATE,WM_GETTEXT等消息.输入事件,就是它.

推荐阅读
赛亚兔备_393
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有