2010-06-17 3 views
1

J'écris une application MFC et ai besoin d'un bouton qui n'entraîne pas le focus d'entrée loin d'une autre fenêtre.Comment puis-je empêcher un CWnd d'obtenir le focus?

Retrait du style WS_TABSTOP ne malheureusement pas aider lorsque l'utilisation clique sur le bouton avec la souris. Quand je bloque WM_LBUTTONDOWN je n'obtiens pas d'indication visuelle pressée donc ça ne marche pas non plus.

Répondre

3

S'il y a une fenêtre spécifique dans laquelle vous souhaitez conserver le focus, vous pouvez forcer le focus vers votre fenêtre en utilisant la commande CWnd::SetFocus() dans le gestionnaire OnLButtonDown de votre bouton. Si vous souhaitez que le focus soit restauré sur l'une de plusieurs fenêtres, vous pouvez essayer de sous-classer CButton et d'intercepter le message CWnd::OnSetFocus() qui est envoyé lorsque le focus du clavier devient le bouton.

Le OnSetFocus() événement comprend un CWnd du contrôle qui vient de perdre la mise au point, vous pouvez donc manuellement remettre, que ce soit dans le cadre de l'événement lui-même OnSetFocus(), ou plus tard dans le cadre du nouveau gestionnaire OnLButtonDown().

Questions connexes