je trouve la description dans MSDN un peu déroutant aussi bien, mais voici mon révisée:
D'abord un premier plan et la fenêtre d'arrière-plan ont rien à voir avec les fenêtres actives, il doit faire avec filetage, voir ci-dessous. Il est donc techniquement possible d'avoir une fenêtre d'arrière-plan en tant que fenêtre active, mais cela crée de la confusion et le système ne fait pas cela pour vous, mais votre application doit appeler par ex. SetWindowPos pour activer la fenêtre d'arrière-plan.
Le système ne peut avoir qu'une fenêtre active de niveau supérieur à la fois, le système activera la fenêtre de niveau supérieur si vous travaillez sur une fenêtre enfant. Toutes les entrées sont ensuite dirigées vers la fenêtre active, puis normalement transmises à la fenêtre enfant.
/----------------------\
| |
| FOREGROUND WINDOW |--\
| | |
\----------------------/ |
| BACKGROUND WINDOW |
\-----------------------/
/----------------------\
| |
| ACTIVE WINDOW |--\
| | |
\----------------------/ |
| BACKGROUND WINDOW |
\-----------------------/
De MSDN
Fenêtre active
Une fenêtre active est la fenêtre de niveau supérieur de l'application avec laquelle l'utilisateur travaille actuellement. Pour permettre à l'utilisateur d'identifier facilement la fenêtre active, le système la place en haut de l'ordre z et modifie la couleur de sa barre de titre et de sa bordure en fonction des couleurs de fenêtre actives définies par le système. Seule une fenêtre de niveau supérieur peut être une fenêtre active. Lorsque l'utilisateur travaille avec une fenêtre enfant, le système active la fenêtre parent de niveau supérieur associée à la fenêtre enfant.
premier plan/arrière-plan
Chaque processus peut avoir de multiples fils d'exécution, et chaque fil peut créer des fenêtres. Le thread qui a créé la fenêtre avec laquelle l'utilisateur travaille actuellement s'appelle le thread de premier plan et la fenêtre est appelée la fenêtre de premier plan. Tous les autres threads sont des threads d'arrière-plan et les fenêtres créées par les threads d'arrière-plan sont appelées fenêtres d'arrière-plan.
Ceci est la bonne réponse. Il est également utile de lire [cet article de blog] (http://blogs.msdn.com/b/oldnewthing/archive/2008/10/06/8969399.aspx). – Ruslan
Il n'est pas strictement vrai que l'appel 'GetActiveWindow' d'un thread d'arrière-plan renvoie' NULL'. La fenêtre d'un thread d'arrière-plan peut être activée, sans en faire la fenêtre de premier plan (par exemple en appelant 'SetForegroundWindow' sans répondre aux exigences, ou si vous passez à une autre application entre le lancement d'une application et l'application montrant son interface utilisateur). Cependant, vous avez presque raison sur la fenêtre active: La fenêtre active est virtualisée par ** thread ** (ou groupe de threads attaché à une entrée), pas par application ou par processus. – IInspectable
La réponse précédente que j'ai acceptée a été éditée plus tard et a peu de sens pour moi maintenant. Donc, j'ai changé ma réponse acceptée à ceci, après 5 et 1/2 ans !!!!!!!!!!!!!!!!!!!! – JavaMan