Comment puis-je savoir si une Fenêtre a le focus? (API Win32)
À l'aide de l'API Win32 (en C, mais c'est sans importance) comment puis-je savoir si une fenêtre donnée (identifié par HWND) a le focus? Je suis d'accrocher une demande de regarder pour un événement, et lorsque cet événement se produit, je veux vérifier si l'application est déjà en cours. Si ça ne marche pas, je veux flash la fenêtre jusqu'à ce qu'ils donner le focus à elle.
Alternativement, le FlashWindowEx struct drapeau FLASHW_TIMERNOFG qui clignote jusqu'à ce que la fenêtre a le focus tout simplement pas le flash si la fenêtre a le focus? Je ne peux pas tester maintenant cette question car je ne suis pas dans mon environnement de développement, mais j'étais sous l'impression qu'il flash de toute façon, qui est ce que j'essaie d'éviter.
Edit: Aussi, si c'est important, l'application utilise DirectX dans cette fenêtre.
- Voulez-vous être se demander si cette fenêtre a le focus", ou "toute cette fenêtre a le focus"?
- Je l'ai indiqué dans un commentaire ci-dessous que cette application ne disposez que d'une Fenêtre.
Vous devez vous connecter pour publier un commentaire.
GetActiveWindow sera de retour le de haut niveau fenêtre qui est associé avec le focus d'entrée. GetFocus sera de retour le handle de la fenêtre qui a le focus d'entrée.
Cet article peut vous aider à:
http://www.microsoft.com/msj/0397/Win32/Win320397.aspx
Outre gkrogers réponse à l'aide de GetActiveWindow, vous pouvez également conserver une variable booléenne pour la fenêtre que vous voulez savoir si il est activé ou non par le piégeage de la
WM_SETFOCUS
etWM_KILLFOCUS
événements, ouWM_ACTIVATE
Pensez-vous vraiment dire "focus" ou voulez-vous dire "active?"
Une fenêtre a le focus -- celui qui est en première ligne pour obtenir des événements de clavier. De la fenêtre extérieure (que l'utilisateur peut faire glisser autour de l'écran) est "actif" si l'un de ses plusieurs fenêtres a le focus, mais il pourrait ou ne pourrait pas avoir le focus lui-même.
Utilisation GetForegroundWindow fonction pour obtenir le Hwnd, vous devez vous concentrer maintenant. Ensuite, vous avez juste besoin de la comparer à la fenêtre de votre application afin de vérifier si elle contient de l'attention ou pas.