Question

Dans mon application, j'ai une fenêtre qui apparaît avec de petits messages (pensez à une info-bulle).Cette fenêtre utilise les attributs en couches pour dessiner des arrière-plans alpha, etc.

Si plusieurs de ces fenêtres sont ouvertes en même temps et que je clique sur une avec ma souris, lorsqu'elles disparaissent, mon application perd le focus (elle bascule le focus sur l'application située derrière l'application actuelle).

Comment arrêter toute interaction dans ma fenêtre ?

Était-ce utile?

La solution 2

Après avoir joué avec le WM_NCACTIVATE message sans succès, j'ai annulé le WM_SETFOCUS message:

void CMyWindow::OnSetFocus(CWnd* pOldWnd)
{
    if (pOldWnd != NULL)
    {
        pOldWnd->SetFocus();
    }
}

Cela semble faire l'affaire.Je ne sais pas pourquoi ça marche !Les commentaires sont les bienvenus sur cette question.

Autres conseils

Cela fonctionne parce que OnSetFocus (comme la plupart des méthodes On*) vous donne la possibilité d'anticiper une action avant qu'elle ne se produise réellement.Le focus ne passe jamais réellement sur votre fenêtre non interactive.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top