문제

아래는 내 메시지 필터입니다.

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). 왜 이런거야?

도움이 되었습니까?

해결책

ImessageFilter.prefiltermessage ()는 메시지 큐의 메시지 만 호출됩니다. WM_CLOSE와 같은 메시지는 sendMessage ()와 함께 wndproc ()로 직접 전송되며 큐를 우회합니다. 또한 wm_activate, wm_gettext 등과 같은 메시지를받지 못합니다. 입력 이벤트는 그에 관한 것입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top