Frage

(MFC Frage) Was ist der beste Weg, um den aktuell angezeigten Client-Bereich in einem CScrollView zu bestimmen? Ich brauche nur die Größe des sichtbaren Bereichs, so GetClientRect () wird hier nicht funktionieren.

War es hilfreich?

Lösung

Sie müssen GetClientRect () verwenden, aber ich glaube, Sie die falsche Frage fragen. Es ist nicht so, dass in einer gescrollt Ansicht gibt ein sehr großes Client-Fenster ist, das physisch gescrollt wird. Stattdessen, wenn Sie blättern, werden die DCs viewportext und Mapping-Modus eingestellt, die es scheinen, wie Ihre Ansicht größer ist, als es tatsächlich ist. Also, wenn Sie eine Linie von der oberen linken Ecke der unteren rechten Ecke des aktuellen Ansichtsfenster zeichnen möchten, müssen Sie GetViewPortOrg () und GetViewportExt (). Wenn diese die falschen Werte zurückgeben, ist etwas falsch in Ihrem Einsatz von CScrollView. Haben Sie rufen SetScrollSizes ()?

Andere Tipps

In Ihrer OnDraw () Funktion, könnten Sie rufen pDC-> GetViewportOrg und pDC-> GetViewportExt.

Bearbeiten : Sorry, ich vergaß, dass Ansichtsfenster Ausdehnungen nur Skalierungsfaktoren sind. Ich bin damit einverstanden, dass, was Sie wirklich hier brauchen, ist der Kunde rect.

Ja, Sie sind beide richtig. GetClientRect war genau das, was ich brauchte. Ein Gehirn Furz auf meinem Teil ...

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top