So erstellen Sie ein nicht interaktives Fenster in MFC
-
09-06-2019 - |
Frage
In meiner Anwendung habe ich ein Fenster, in dem kleine Meldungen angezeigt werden (ähnlich wie bei einer QuickInfo).Dieses Fenster verwendet die Ebenenattribute zum Zeichnen von Alpha-Hintergründen usw.
Wenn mehrere dieser Fenster gleichzeitig geöffnet sind und ich mit der Maus auf eines klicke, verliert meine Anwendung beim Verschwinden den Fokus (der Fokus wechselt auf die App hinter dem aktuellen).
Wie kann ich jegliche Interaktion in meinem Fenster stoppen?
Lösung 2
Nach dem Spielen mit dem WM_NCACTIVATE
Nachricht ohne Erfolg, ich habe die überschrieben WM_SETFOCUS
Nachricht:
void CMyWindow::OnSetFocus(CWnd* pOldWnd)
{
if (pOldWnd != NULL)
{
pOldWnd->SetFocus();
}
}
Das scheint den Zweck zu erfüllen.Keine Ahnung, warum es funktioniert!Kommentare zu diesem Thema sind willkommen.
Andere Tipps
Es funktioniert, weil OnSetFocus (wie viele der On*-Methoden) Ihnen die Möglichkeit gibt, eine Aktion vorwegzunehmen, bevor sie tatsächlich ausgeführt wird.Der Fokus wechselt nie wirklich zu Ihrem nicht interaktiven Fenster.