Mettre la fenêtre au premier plan en C

J'écris une application qui doit mettre la fenêtre d'une application externe au premier plan, et pas nécessairement voler le focus (il y a un paramètre que l'utilisateur peut basculer pour voler/ne pas voler le focus).

Quelle est la meilleure façon de procéder à l'aide de l'API win32 ? J'ai essayé SetForeground() mais il vole toujours le focus et ne fonctionne pas systématiquement.

Quelle est la meilleure façon de procéder ? Des idées ?

请先 登录 后评论

3 réponses

NilObject

Vous pouvez essayer la fonction BringWindowToTop pour ne pas voler le focus. Je ne l'ai pas utilisé, mais il semble que ce soit ce que vous cherchez.

请先 登录 后评论
NilObject

Quelle est la différence entre SetForeGroundWindow, SetActiveWindow et BringWindowToTop ? Il semble qu'ils fassent tous la même chose.

Selon MSDN, SetForeGroundWindow activera la fenêtre et dirigera le focus du clavier vers celle-ci. Cela tente de fonctionner même lorsque votre processus est en arrière-plan. SetActiveWindow fait la même chose que SetForeGroundWindow, mais il ne fait rien si votre application n'est pas la première application. Enfin, BringWindowToTop ne fait qu'amener la fenêtre en haut et ne modifie pas le focus du clavier.

请先 登录 后评论
Kenny Zhou

SetWindowPos SWP_NOACTIVATE fait le travail.

请先 登录 后评论
  • 4 abonnés
  • 0 favoris,325 Feuilleter
  • adeel825 posée à 2023-03-05 02:44