WM_DESTROY unter Umgehung WM_CLOSE IMessageFilter
-
21-08-2019 - |
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?
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