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?

War es hilfreich?

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.

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