Question

(Question MFC) Quel est le meilleur moyen de déterminer la zone client actuellement affichée dans un CScrollView? Je n'ai besoin que de la taille de la partie visible, donc GetClientRect () ne fonctionnera pas ici.

Était-ce utile?

La solution

Vous devez utiliser GetClientRect (), mais je pense que vous posez la mauvaise question. Ce n'est pas ainsi que dans une vue défilée, il existe une très grande fenêtre client qui fait défiler physiquement. Au lieu de cela, lorsque vous faites défiler, le viewportext et le mode de mappage du contrôleur de domaine sont ajustés, ce qui donne l'impression que votre vue est plus grande qu'elle ne l'est réellement. Ainsi, si vous souhaitez tracer une ligne à partir du coin supérieur gauche du coin inférieur droit de la fenêtre d'affichage actuelle, vous avez besoin de GetViewPortOrg () et de GetViewportExt (). Si celles-ci renvoient des valeurs incorrectes, il y a un problème avec votre utilisation de CScrollView. Avez-vous appelé SetScrollSizes ()?

Autres conseils

Dans votre fonction OnDraw (), vous pouvez appeler pDC- > GetViewportOrg et pDC- > GetViewportExt.

MODIFIER : Désolé, j'ai oublié que les étendues de la fenêtre de visualisation ne sont que des facteurs d'échelle. Je conviens que ce dont vous avez vraiment besoin ici, c’est le client droit.

Oui, vous avez raison tous les deux. GetClientRect était exactement ce dont j'avais besoin. Un pet de cerveau de ma part ...

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top