Frage

Im Folgenden finden Sie meine Nachricht Filter:

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;
}

ich festgestellt, dass ich die meisten Nachrichten, ohne ein Problem bin Filterung. Allerdings erhalte ich keine versendet Nachrichten nach dem Schließen-Button des Fensters angeklickt wird (WM_CLOSE, WM_DESTROY, WM_NCDESTROY und WM_QUIT). Warum ist das?

War es hilfreich?

Lösung

IMessageFilter.PreFilterMessage () wird nur für Nachrichten in der Nachrichtenwarteschlange bezeichnet. Nachrichten wie WM_CLOSE werden direkt an WndProc gesendet () mit Sendmessage (), umgehen sie die Warteschlange. Sie werden auch nicht bekommen Nachrichten wie WM_ACTIVATE, WM_GETTEXT usw. Eingabeereignisse, das ist es.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top