
Die CScrollView -Klasse ist eine CView mit Scroll-Funktionen.
Sie können die standard Scrollen Sie sich in jeder Klasse, abgeleitet von CView durch Überschreiben der Nachricht zugeordnet OnHScroll OnVScroll Memberfunktionen und behandeln. Aber CScrollView fügt die folgenden Funktionen zu ihrer CView -Funktionen:
Mausrad scrollen Sie sich durch die Nachricht zugeordnet OnMouseWheel und OnRegisteredMouseWheel Memberfunktionen überschreiben können behandelt werden. Wie für CScrollView, unterstützen diese Memberfunktionen das empfohlene Verhalten für WM_MOUSEWHEEL-Meldungen, die Rad-Drehung-Nachricht.
Um automatische Bildläufe zu nutzen, leiten Sie der Ansichtsklasse von CScrollView anstelle von CView ab. Wenn die Ansicht zuerst erstellt wird, wenn Sie die Größe des bildlauffähigen Ansicht basierend auf der Größe des Dokuments berechnen möchten, rufen Sie die SetScrollSizes -Memberfunktion überschreiben entweder CView::OnInitialUpdate oder CView::OnUpdate. (Sie müssen Ihren eigenen Code zum Abfragen der Größe des Dokuments schreiben. Ein Beispiel finden Sie unter Verbesserung der Ansichten in Visual C++ Tutorials.)
Der Aufruf der Memberfunktion SetScrollSizes legt die Ansicht Zuordnungsmodus, die insgesamt Abmessungen der Bildlaufansicht, und die horizontal und vertikal scrollen. Alle Größen sind in logischen Einheiten. Die logische Größe der Ansicht errechnet sich normalerweise aus Daten, die im Dokument gespeichert, aber in einigen Fällen kann eine feste Größe angeben möchten. Beispiele für beide Ansätze finden Sie unter CScrollView::SetScrollSizes.
Sie geben die Beträge für den Bildlauf horizontal und vertikal in logischen Einheiten. Standardmäßig Wenn der Benutzer eine Scroll Bar Welle außerhalb des Bildlauffelds klickt, blättert CScrollView eine "Seite". Wenn der Benutzer ein Bildlaufpfeils an beiden Enden einer Bildlaufleiste klickt, wird der Bildlauf CScrollView einer "Linie". Standardmäßig ist eine Seite 1/10 der Gesamtgröße der Ansicht; eine Zeile ist 1/10 der Seitengröße. Überschreiben Sie diese Standardwerte, indem Sie benutzerdefinierte Größen in der SetScrollSizes -Memberfunktion übergeben. Beispielsweise können Sie die horizontale Größe auf einige Bruchteil der Breite die Gesamtgröße und die vertikale Größe an die Höhe einer Zeile in der aktuellen Schriftart festlegen.
Statt scrollen, können CScrollView automatisch die Ansicht an die aktuelle Fenstergröße skaliert. In diesem Modus die Ansicht verfügt über keine Bildlaufleisten und die logische Ansicht wird gedehnt oder verkleinert, um den Clientbereich des Fensters genau passen. Um diese Skala-zu-passen-Funktion zu verwenden, rufen Sie CScrollView::SetScaleToFitSize. (Rufen Sie entweder SetScaleToFitSize oder SetScrollSizes, aber nicht beide).
Bevor Sie die OnDraw -Memberfunktion der Klasse abgeleitete Sicht genannt wird, CScrollView passt automatisch den Viewport Ursprung für das CPaintDC Gerätekontext Objekt, das es an übergibtOnDraw.
Um den Viewport Ursprung für das Bildlauffenster ändern, überschreibt die CScrollView CView::OnPrepareDC. Diese Anpassung erfolgt automatisch für den Gerätekontext CPaintDC , die CScrollView an übergibt OnDraw , aber müssen Sie CScrollView::OnPrepareDC Sie sich für andere Sie, z. B. eine CClientDC verwendenGerätekontexte. Sie können außer Kraft setzen, CScrollView::OnPrepareDC , legen Sie den Stift, Hintergrundfarbe und andere Zeichnungsattribute, sondern rufen Sie die Basisklasse Skalierung zu tun.
Bildlaufleisten können an drei Orten relativ zu einer Ansicht angezeigt werden, wie in den folgenden Fällen dargestellt:
Weitere Informationen zum Verwenden der CScrollView, finden Sie unter Document/View-Architektur-Themen und Abgeleitete Ansichtsklassen im Visual C++ Programmer's Guide.
# include lt;afxwin.h>
Klasse&nmember |nbsp; Basisklasse | Hierarchiediagramm
Beispiel&Nbsp; MFC-Beispiel DIBLOOK
Siehe auch&Nbsp;CView, CSplitterWnd