2009-07-09 6 views
0

J'essaie de déterminer la position de la fenêtre d'une application. Je sais que SetWindowPos() définirait la position de la fenêtre à une certaine position avec un dimensionnement spécifique. Je voudrais récupérer cette information, mais j'ai noté quelques valeurs négatives là-dedans. Lorsque je sauvegarde ces valeurs dans le registre et les charge ensuite sur l'instance suivante, je ne peux pas répliquer correctement les informations de dimensionnement et de placement. Est-ce même la fonction la plus précise à utiliser en premier lieu?Utilisation de MFC: GetWindowRect

Merci.

Répondre

3

Vous devez appeler la méthode GetWindowPlacement pour obtenir la structure WINDOWPLACEMENT qui a non seulement la position de la fenêtre, mais aussi l'état de la fenêtre (minimisé, agrandi, etc., etc.).

À son tour, vous devez stocker ces informations dans le registre en plus des valeurs de position et définir l'état de la fenêtre lors de la lecture des valeurs à partir du registre.

+0

Lorsque je configure la structure WINDOWPLACEMENT pour la première fois, je ne saurai pas comment définir l'élément de longueur de cette structure. Dans ce cas, que faut-il faire pour cet élément (similaire aux autres éléments)? – stanigator

+0

Pourquoi ne le sauriez-vous pas? C'est la longueur de la structure en octets, que vous pouvez obtenir en utilisant sizeof (wp) où wp est la variable de structure WINDOWPLACEMENT. – casperOne

2

Oui, GetWindowRect est la fonction que vous voulez. Les valeurs négatives ne doivent être possibles que sur plusieurs moniteurs, lorsque la fenêtre est au-dessus ou à gauche du moniteur principal.

SetWindowPos définira la position par rapport à la fenêtre parent de la fenêtre, vous devrez donc ajuster les coordonnées avant de l'appeler.