Klasa CScrollViewCScrollView Class

CView z możliwościami przewijania.A CView with scrolling capabilities.

SkładniaSyntax

class CScrollView : public CView

Elementy członkowskieMembers

Konstruktory chronioneProtected Constructors

NazwaName OpisDescription
CScrollView::CScrollViewCScrollView::CScrollView Konstruuje CScrollView obiekt.Constructs a CScrollView object.

Metody publicznePublic Methods

NazwaName OpisDescription
CScrollView::CheckScrollBarsCScrollView::CheckScrollBars Wskazuje, czy widok przewijania ma poziome i pionowe paski przewijania.Indicates whether the scroll view has horizontal and vertical scroll bars.
CScrollView::FillOutsideRectCScrollView::FillOutsideRect Wypełnia obszar widoku poza obszarem przewijania.Fills the area of a view outside the scrolling area.
CScrollView::GetDeviceScrollPositionCScrollView::GetDeviceScrollPosition Pobiera bieżącą pozycję przewijania w jednostkach urządzeń.Gets the current scroll position in device units.
CScrollView::GetDeviceScrollSizesCScrollView::GetDeviceScrollSizes Pobiera bieżący tryb mapowania, łączny rozmiar oraz rozmiary wierszy i stron widoku przewijania.Gets the current mapping mode, the total size, and the line and page sizes of the scrollable view. Rozmiary są w jednostkach urządzeń.Sizes are in device units.
CScrollView::GetScrollPositionCScrollView::GetScrollPosition Pobiera bieżącą pozycję przewijania w jednostkach logicznych.Gets the current scroll position in logical units.
CScrollView:: GetTotalSizeCScrollView::GetTotalSize Pobiera łączny rozmiar widoku przewijania w jednostkach logicznych.Gets the total size of the scroll view in logical units.
CScrollView::ResizeParentToFitCScrollView::ResizeParentToFit Powoduje, że rozmiar widoku jest podyktowany rozmiarem jego ramki.Causes the size of the view to dictate the size of its frame.
CScrollView::ScrollToPositionCScrollView::ScrollToPosition Przewija widok do danego punktu, który jest określony w jednostkach logicznych.Scrolls the view to a given point, specified in logical units.
CScrollView::SetScaleToFitSizeCScrollView::SetScaleToFitSize Umieszcza Widok przewijania w trybie skalowania do-dopasowanie.Puts the scroll view into scale-to-fit mode.
CScrollView::SetScrollSizesCScrollView::SetScrollSizes Ustawia tryb mapowania widoku przewijania, łączny rozmiar i poziome i pionowe ilości przewijania.Sets the scroll view's mapping mode, total size, and horizontal and vertical scroll amounts.

UwagiRemarks

Możesz obsłużyć przewijanie standardowe samodzielnie w dowolnej klasie pochodnej CView przez zastępowanie funkcji Członkowskich mapowanych OnHScroll i OnVScroll .You can handle standard scrolling yourself in any class derived from CView by overriding the message-mapped OnHScroll and OnVScroll member functions. CScrollViewDodaje do swoich możliwości następujące funkcje CView :But CScrollView adds the following features to its CView capabilities:

  • Zarządza rozmiar okna i okienka ekranu oraz tryby mapowania.It manages window and viewport sizes and mapping modes.

  • Jest ono automatycznie przewijane w odpowiedzi na komunikaty paska przewijania.It scrolls automatically in response to scroll-bar messages.

  • Automatycznie przewija w odpowiedzi na komunikaty z klawiatury, myszy, która nie jest przewijana lub kółkiem myszy.It scrolls automatically in response to messages from the keyboard, a non-scrolling mouse, or the IntelliMouse wheel.

Aby przewijać automatycznie w odpowiedzi na komunikaty z klawiatury, Dodaj komunikat WM_KEYDOWN i przetestuj VK_DOWN, VK_PREV i Wywołaj SetScrollPos.To scroll automatically in response to messages from the keyboard, add a WM_KEYDOWN message, and test for VK_DOWN, VK_PREV and call SetScrollPos.

Możesz obsłużyć przewijanie kółka myszy samodzielnie przez zastępowanie funkcji Członkowskich mapowanych OnMouseWheel i OnRegisteredMouseWheel .You can handle mouse wheel scrolling yourself by overriding the message-mapped OnMouseWheel and OnRegisteredMouseWheel member functions. W zależności od tego CScrollView , te funkcje składowe obsługują zalecane zachowanie dla WM_MOUSEWHEEL, komunikat obrotu kółkiem.As they are for CScrollView, these member functions support the recommended behaviour for WM_MOUSEWHEEL, the wheel rotation message.

Aby skorzystać z automatycznego przewijania, Utwórz klasę widoku od CScrollView zamiast z CView .To take advantage of automatic scrolling, derive your view class from CScrollView instead of from CView. Gdy widok jest tworzony po raz pierwszy, jeśli chcesz obliczyć rozmiar widoku przewijalnego na podstawie rozmiaru dokumentu, wywołaj SetScrollSizes funkcję członkowską z przesłonięcia którejkolwiek z CView:: OnInitialUpdate lub CView:: OnUpdate.When the view is first created, if you want to calculate the size of the scrollable view based on the size of the document, call the SetScrollSizes member function from your override of either CView::OnInitialUpdate or CView::OnUpdate. (Musisz napisać własny kod, aby zbadać rozmiar dokumentu.(You must write your own code to query the size of the document. Aby zapoznać się z przykładem, zobacz przykładowy Bazgroły.)For an example, see the Scribble sample.)

Wywołanie do SetScrollSizes funkcji składowej ustawia tryb mapowania widoku, łączne wymiary widoku przewijania i ilości, które mają być przewijane w poziomie i w pionie.The call to the SetScrollSizes member function sets the view's mapping mode, the total dimensions of the scroll view, and the amounts to scroll horizontally and vertically. Wszystkie rozmiary są w jednostkach logicznych.All sizes are in logical units. Rozmiar logiczny widoku jest zwykle obliczany na podstawie danych przechowywanych w dokumencie, ale w niektórych przypadkach może być konieczne określenie stałego rozmiaru.The logical size of the view is usually calculated from data stored in the document, but in some cases you may want to specify a fixed size. Aby zapoznać się z przykładami obu metod, zobacz CScrollView:: SetScrollSizes.For examples of both approaches, see CScrollView::SetScrollSizes.

Należy określić kwoty do przewijania w poziomie i w pionie w jednostkach logicznych.You specify the amounts to scroll horizontally and vertically in logical units. Domyślnie, jeśli użytkownik kliknie wału paska przewijania poza polem przewijania, CScrollView przewija "stronę".By default, if the user clicks a scroll bar shaft outside of the scroll box, CScrollView scrolls a "page." Jeśli użytkownik kliknie strzałkę przewijania na dowolnym końcu paska przewijania, CScrollView przewija "wiersz".If the user clicks a scroll arrow at either end of a scroll bar, CScrollView scrolls a "line." Domyślnie strona jest 1/10 o całkowitym rozmiarze widoku; wiersz jest 1/10 rozmiaru strony.By default, a page is 1/10 of the total size of the view; a line is 1/10 of the page size. Przesłoń te wartości domyślne, przekazując niestandardowe rozmiary w SetScrollSizes funkcji składowej.Override these default values by passing custom sizes in the SetScrollSizes member function. Można na przykład ustawić rozmiar w poziomie na część szerokości całkowitego rozmiaru i rozmiar pionowy na wysokość wiersza w bieżącej czcionce.For example, you might set the horizontal size to some fraction of the width of the total size and the vertical size to the height of a line in the current font.

Zamiast przewijania, program CScrollView może automatycznie skalować widok do bieżącego rozmiaru okna.Instead of scrolling, CScrollView can automatically scale the view to the current window size. W tym trybie widok nie ma pasków przewijania i Widok logiczny jest rozciągany lub zmniejszany w celu dokładnego dopasowania obszaru klienta okna.In this mode, the view has no scroll bars and the logical view is stretched or shrunk to exactly fit the window's client area. Aby skorzystać z tej możliwości skalowania do rozmiaru, wywołaj CScrollView:: SetScaleToFitSize.To use this scale-to-fit capability, call CScrollView::SetScaleToFitSize. (Wywołaj SetScaleToFitSize albo SetScrollSizes , ale nie oba.)(Call either SetScaleToFitSize or SetScrollSizes, but not both.)

Przed OnDraw wywołaniem funkcji członkowskiej klasy widoku pochodnego program CScrollView automatycznie dostosowuje pochodzenie okienka ekranu dla CPaintDC obiektu kontekstu urządzenia, do którego przekazuje OnDraw .Before the OnDraw member function of your derived view class is called, CScrollView automatically adjusts the viewport origin for the CPaintDC device-context object that it passes to OnDraw.

Aby dostosować Źródło okienka ekranu dla okna przewijania, CScrollView zastępuje CView:: OnPrepareDC.To adjust the viewport origin for the scrolling window, CScrollView overrides CView::OnPrepareDC. Ta korekta jest automatycznie CPaintDC stosowana dla kontekstu urządzenia, który CScrollView przekazuje do OnDraw , ale należy wywołać CScrollView::OnPrepareDC siebie dla wszystkich innych kontekstów urządzeń, takich jak CClientDC .This adjustment is automatic for the CPaintDC device context that CScrollView passes to OnDraw, but you must call CScrollView::OnPrepareDC yourself for any other device contexts you use, such as a CClientDC. Możesz przesłonić CScrollView::OnPrepareDC , aby ustawić pióro, kolor tła i inne atrybuty rysowania, ale Wywołaj klasę bazową, aby przeprowadzić skalowanie.You can override CScrollView::OnPrepareDC to set the pen, background color, and other drawing attributes, but call the base class to do scaling.

Paski przewijania mogą pojawić się w trzech miejscach względem widoku, jak pokazano w następujących przypadkach:Scroll bars can appear in three places relative to a view, as shown in the following cases:

  • Standardowe paski przewijania stylu okna można ustawić dla widoku przy użyciustylów systemu WindowsWS_HSCROLL i WS_VSCROLL.Standard window-style scroll bars can be set for the view using the WS_HSCROLL and WS_VSCROLLWindows Styles.

  • Kontrolki paska przewijania można także dodawać do ramki zawierającej widok. w takim przypadku struktura przekazuje komunikaty WM_HSCROLL i WM_VSCROLL z okna ramka do aktualnie aktywnego widoku.Scroll-bar controls can also be added to the frame containing the view, in which case the framework forwards WM_HSCROLL and WM_VSCROLL messages from the frame window to the currently active view.

  • Struktura przekazuje także komunikaty przewijania z CSplitterWnd kontrolki rozdzielacza do aktualnie aktywnego okienka rozdzielacza (widok).The framework also forwards scroll messages from a CSplitterWnd splitter control to the currently active splitter pane (a view). Gdy umieszczasz w CSplitterWnd z udostępnionymi paskami przewijania, CScrollView obiekt będzie korzystał z nich zamiast tworzyć własne.When placed in a CSplitterWnd with shared scroll bars, a CScrollView object will use the shared ones rather than creating its own.

Aby uzyskać więcej informacji na temat korzystania z programu CScrollView , zobacz temat Architektura dokumentu/widoku i pochodne klasy widoków dostępne w MFC.For more information on using CScrollView, see Document/View Architecture and Derived View Classes Available in MFC.

Hierarchia dziedziczeniaInheritance Hierarchy

CObjectCObject

CCmdTargetCCmdTarget

CWndCWnd

CViewCView

CScrollView

WymaganiaRequirements

Nagłówek: afxwin. hHeader: afxwin.h

CScrollView::CheckScrollBarsCScrollView::CheckScrollBars

Wywołaj tę funkcję elementu członkowskiego, aby określić, czy widok przewijania ma poziomy i pionowy pasek.Call this member function to determine if the scroll view has horizontal and vertical bars.

void CheckScrollBars(
    BOOL& bHasHorzBar,
    BOOL& bHasVertBar) const;

ParametryParameters

bHasHorzBarbHasHorzBar
Oznacza, że aplikacja ma poziomy pasek przewijania.Indicates the application has a horizontal scroll bar.

bHasVertBarbHasVertBar
Oznacza, że aplikacja ma pionowy pasek przewijania.Indicates the application has a vertical scroll bar.

CScrollView::CScrollViewCScrollView::CScrollView

Konstruuje CScrollView obiekt.Constructs a CScrollView object.

CScrollView();

UwagiRemarks

SetScrollSizes SetScaleToFitSize Aby można było użyć widoku przewijania, należy wywołać opcję lub.You must call either SetScrollSizes or SetScaleToFitSize before the scroll view is usable.

CScrollView::FillOutsideRectCScrollView::FillOutsideRect

Wywołaj, FillOutsideRect Aby wypełnić obszar widoku, który pojawia się poza obszarem przewijania.Call FillOutsideRect to fill the area of the view that appears outside of the scrolling area.

void FillOutsideRect(
    CDC* pDC,
    CBrush* pBrush);

ParametryParameters

DomenypDC
Kontekst urządzenia, w którym ma zostać wykonane wypełnienie.Device context in which the filling is to be done.

pBrushpBrush
Pędzel, za pomocą którego obszar ma zostać wypełniony.Brush with which the area is to be filled.

UwagiRemarks

Użyj FillOutsideRect w funkcji obsługi widoku przewijania OnEraseBkgnd , aby zapobiec nadmiernemu odświeżeniu w tle.Use FillOutsideRect in your scroll view's OnEraseBkgnd handler function to prevent excessive background repainting.

PrzykładExample

BOOL CMyScrollView::OnEraseBkgnd(CDC* pDC)
{
   CBrush br(GetSysColor(COLOR_WINDOW));
   FillOutsideRect(pDC, &br);
   return TRUE;                   // Erased
}

CScrollView::GetDeviceScrollPositionCScrollView::GetDeviceScrollPosition

Wywołuje się GetDeviceScrollPosition , gdy potrzebne są bieżące położenie w poziomie i w pionie pól przewijania na paskach przewijania.Call GetDeviceScrollPosition when you need the current horizontal and vertical positions of the scroll boxes in the scroll bars.

CPoint GetDeviceScrollPosition() const;

Wartość zwracanaReturn Value

Położenie w poziomie i w pionie (w jednostkach urządzeń) pól przewijania jako CPoint obiekt.The horizontal and vertical positions (in device units) of the scroll boxes as a CPoint object.

UwagiRemarks

Ta para współrzędnych odpowiada lokalizacji w dokumencie, do której lewy górny róg widoku został przewinięty.This coordinate pair corresponds to the location in the document to which the upper-left corner of the view has been scrolled. Jest to przydatne w przypadku rozliczania pozycji myszy i urządzenia w celu przewijania widoku pozycji urządzenia.This is useful for offsetting mouse-device positions to scroll-view device positions.

GetDeviceScrollPosition zwraca wartości w jednostkach urządzeń.GetDeviceScrollPosition returns values in device units. Jeśli chcesz, aby jednostki logiczne były używane w GetScrollPosition zamian.If you want logical units, use GetScrollPosition instead.

CScrollView::GetDeviceScrollSizesCScrollView::GetDeviceScrollSizes

GetDeviceScrollSizes Pobiera bieżący tryb mapowania, łączny rozmiar oraz rozmiary wierszy i stron widoku przewijania.GetDeviceScrollSizes gets the current mapping mode, the total size, and the line and page sizes of the scrollable view.

void GetDeviceScrollSizes(
    int& nMapMode,
    SIZE& sizeTotal,
    SIZE& sizePage,
    SIZE& sizeLine) const;

ParametryParameters

nMapModenMapMode
Zwraca bieżący tryb mapowania dla tego widoku.Returns the current mapping mode for this view. Listę możliwych wartości można znaleźć w temacie SetScrollSizes .For a list of possible values, see SetScrollSizes.

sizeTotalsizeTotal
Zwraca bieżący łączny rozmiar widoku przewijania w jednostkach urządzeń.Returns the current total size of the scroll view in device units.

sizePagesizePage
Zwraca bieżące wartości w poziomie i pionie, aby przewijać w każdym kierunku w odpowiedzi na kliknięcie myszy w wałku paska przewijania.Returns the current horizontal and vertical amounts to scroll in each direction in response to a mouse click in a scroll-bar shaft. cxElement członkowski zawiera wielkość poziomą.The cx member contains the horizontal amount. cyElement członkowski zawiera kwotę pionową.The cy member contains the vertical amount.

sizeLinesizeLine
Zwraca bieżące poziomy i pionowe ilości, które mają być przewijane w każdym kierunku w odpowiedzi na kliknięcie myszy w strzałce przewijania.Returns the current horizontal and vertical amounts to scroll in each direction in response to a mouse click in a scroll arrow. cxElement członkowski zawiera wielkość poziomą.The cx member contains the horizontal amount. cyElement członkowski zawiera kwotę pionową.The cy member contains the vertical amount.

UwagiRemarks

Rozmiary są w jednostkach urządzeń.Sizes are in device units. Ta funkcja członkowska jest rzadko wywoływana.This member function is rarely called.

CScrollView::GetScrollPositionCScrollView::GetScrollPosition

Wywołuje się GetScrollPosition , gdy potrzebne są bieżące położenie w poziomie i w pionie pól przewijania na paskach przewijania.Call GetScrollPosition when you need the current horizontal and vertical positions of the scroll boxes in the scroll bars.

CPoint GetScrollPosition() const;

Wartość zwracanaReturn Value

Położenie w poziomie i w pionie (w jednostkach logicznych) pól przewijania jako CPoint obiekt.The horizontal and vertical positions (in logical units) of the scroll boxes as a CPoint object.

UwagiRemarks

Ta para współrzędnych odpowiada lokalizacji w dokumencie, do której lewy górny róg widoku został przewinięty.This coordinate pair corresponds to the location in the document to which the upper-left corner of the view has been scrolled.

GetScrollPosition zwraca wartości w jednostkach logicznych.GetScrollPosition returns values in logical units. Jeśli chcesz, aby jednostki urządzenia używały GetDeviceScrollPosition tego programu.If you want device units, use GetDeviceScrollPosition instead.

CScrollView:: GetTotalSizeCScrollView::GetTotalSize

Wywołaj, GetTotalSize Aby pobrać bieżące rozmiary w poziomie i w pionie widoku przewijania.Call GetTotalSize to retrieve the current horizontal and vertical sizes of the scroll view.

CSize GetTotalSize() const;

Wartość zwracanaReturn Value

Łączny rozmiar widoku przewijania w jednostkach logicznych.The total size of the scroll view in logical units. Rozmiar poziomy znajduje się w cx elemencie członkowskim CSize wartości zwracanej.The horizontal size is in the cx member of the CSize return value. Rozmiar w pionie znajduje się w cy elemencie członkowskim.The vertical size is in the cy member.

CScrollView::ResizeParentToFitCScrollView::ResizeParentToFit

Wywołaj, ResizeParentToFit Aby umożliwić rozmiarowi widoku dyktowanie rozmiaru okna ramki.Call ResizeParentToFit to let the size of your view dictate the size of its frame window.

void ResizeParentToFit(BOOL bShrinkOnly = TRUE);

ParametryParameters

bShrinkOnlybShrinkOnly
Rodzaj zmiany, które należy wykonać.The kind of resizing to perform. Wartość domyślna to TRUE, w razie potrzeby zmniejsza okno ramki.The default value, TRUE, shrinks the frame window if appropriate. Paski przewijania będą nadal wyświetlane dla dużych widoków lub małych okien ramowych.Scroll bars will still appear for large views or small frame windows. Wartość FALSE powoduje, że widok zawsze zmienia rozmiar okna ramki.A value of FALSE causes the view always to resize the frame window exactly. Może to być nieco niebezpieczne, ponieważ okno ramki może być zbyt duże, aby zmieściło się w oknie ramki interfejsu wielu dokumentów (MDI) lub na ekranie.This can be somewhat dangerous since the frame window could get too big to fit inside the multiple document interface (MDI) frame window or the screen.

UwagiRemarks

Jest to zalecane tylko w przypadku widoków w podrzędnych oknach ramek MDI.This is recommended only for views in MDI child frame windows. Użyj ResizeParentToFit w OnInitialUpdate funkcji obsługi CScrollView klasy pochodnej.Use ResizeParentToFit in the OnInitialUpdate handler function of your derived CScrollView class. Aby zapoznać się z przykładem tej funkcji członkowskiej, zobacz CScrollView:: SetScrollSizes.For an example of this member function, see CScrollView::SetScrollSizes.

ResizeParentToFit przyjęto założenie, że rozmiar okna widoku został ustawiony.ResizeParentToFit assumes that the size of the view window has been set. Jeśli nie ustawiono rozmiaru okna widoku ResizeParentToFit , gdy jest wywoływana, otrzymasz potwierdzenie.If the view window size has not been set when ResizeParentToFit is called, you will get an assertion. Aby upewnić się, że to nie nastąpiło, przed wywołaniem należy wykonać następujące wywołanie ResizeParentToFit :To ensure that this does not happen, make the following call before calling ResizeParentToFit:

GetParentFrame()->RecalcLayout();

CScrollView::ScrollToPositionCScrollView::ScrollToPosition

Wywołanie ScrollToPosition przewijania do danego punktu w widoku.Call ScrollToPosition to scroll to a given point in the view.

void ScrollToPosition(POINT pt);

ParametryParameters

zmiennoprzecinkowpt
Punkt do przewijania w jednostkach logicznych.The point to scroll to, in logical units. xElement członkowski musi być wartością dodatnią (większą lub równą 0, aż do całkowitego rozmiaru widoku).The x member must be a positive value (greater than or equal to 0, up to the total size of the view). Ta sama wartość jest prawdziwa dla y elementu członkowskiego, gdy tryb mapowania jest MM_TEXT.The same is true for the y member when the mapping mode is MM_TEXT. ySkładowa jest ujemna w trybach mapowania innych niż MM_TEXT.The y member is negative in mapping modes other than MM_TEXT.

UwagiRemarks

Widok zostanie przewinięty, aby ten punkt znajdował się w lewym górnym rogu okna.The view will be scrolled so that this point is at the upper-left corner of the window. Ta funkcja członkowska nie może być wywoływana, jeśli widok jest skalowany do dopasowania.This member function must not be called if the view is scaled to fit.

CScrollView::SetScaleToFitSizeCScrollView::SetScaleToFitSize

Wywołaj SetScaleToFitSize , gdy chcesz automatycznie skalować rozmiar okienka ekranu do bieżącego rozmiaru okna.Call SetScaleToFitSize when you want to scale the viewport size to the current window size automatically.

void SetScaleToFitSize(SIZE sizeTotal);

ParametryParameters

sizeTotalsizeTotal
Rozmiary w poziomie i w pionie, do których widok ma być skalowany.The horizontal and vertical sizes to which the view is to be scaled. Rozmiar widoku przewijania jest mierzony w jednostkach logicznych.The scroll view's size is measured in logical units. Rozmiar w poziomie jest zawarty w cx elemencie członkowskim.The horizontal size is contained in the cx member. Rozmiar w pionie jest zawarty w cy elemencie członkowskim.The vertical size is contained in the cy member. Oba cx i cy muszą być większe lub równe 0.Both cx and cy must be greater than or equal to 0.

UwagiRemarks

Przy użyciu pasków przewijania tylko część widoku logicznego może być widoczna w dowolnym momencie.With scroll bars, only a portion of the logical view may be visible at any time. Ale z możliwością skalowania do rozmiaru widok nie ma pasków przewijania, a Widok logiczny jest rozciągany lub zmniejszany, aby dokładnie dopasować obszar klienta okna.But with the scale-to-fit capability, the view has no scroll bars and the logical view is stretched or shrunk to exactly fit the window's client area. Po zmianie rozmiaru okna widok rysuje jego dane w nowej skali na podstawie rozmiaru okna.When the window is resized, the view draws its data at a new scale based on the size of the window.

Zwykle nastąpi wywołanie SetScaleToFitSize w przesłonięciu OnInitialUpdate funkcji składowej widoku.You'll typically place the call to SetScaleToFitSize in your override of the view's OnInitialUpdate member function. Jeśli nie chcesz używać automatycznego skalowania, wywołaj SetScrollSizes funkcję elementu członkowskiego.If you do not want automatic scaling, call the SetScrollSizes member function instead.

SetScaleToFitSize może służyć do implementowania operacji "Powiększ do dopasowania".SetScaleToFitSize can be used to implement a "Zoom to Fit" operation. Użyj SetScrollSizes , aby ponownie zainicjować przewijanie.Use SetScrollSizes to reinitialize scrolling.

SetScaleToFitSize przyjęto założenie, że rozmiar okna widoku został ustawiony.SetScaleToFitSize assumes that the size of the view window has been set. Jeśli nie ustawiono rozmiaru okna widoku SetScaleToFitSize , gdy jest wywoływana, otrzymasz potwierdzenie.If the view window size has not been set when SetScaleToFitSize is called, you will get an assertion. Aby upewnić się, że to nie nastąpiło, przed wywołaniem należy wykonać następujące wywołanie SetScaleToFitSize :To ensure that this does not happen, make the following call before calling SetScaleToFitSize:

GetParentFrame()->RecalcLayout();

CScrollView::SetScrollSizesCScrollView::SetScrollSizes

Wywołaj SetScrollSizes , gdy widok ma zostać zaktualizowany.Call SetScrollSizes when the view is about to be updated.

void SetScrollSizes(
    int nMapMode,
    SIZE sizeTotal,
    const SIZE& sizePage = sizeDefault,
    const SIZE& sizeLine = sizeDefault);

ParametryParameters

nMapModenMapMode
Tryb mapowania do ustawienia dla tego widoku.The mapping mode to set for this view. Możliwe wartości to:Possible values include:

Tryb mapowaniaMapping Mode Jednostka logicznaLogical Unit Dodatnia oś y rozciąga się...Positive y-axis Extends...
MM_TEXTMM_TEXT 1 piksel1 pixel CiągnięcieDownward
MM_HIMETRICMM_HIMETRIC 0,01 mm0.01 mm WięcejUpward
MM_TWIPSMM_TWIPS 1/1440 w1/1440 in WięcejUpward
MM_HIENGLISHMM_HIENGLISH 0,001 w0.001 in WięcejUpward
MM_LOMETRICMM_LOMETRIC 0,1 mm0.1 mm WięcejUpward
MM_LOENGLISHMM_LOENGLISH 0,01 w0.01 in WięcejUpward

Wszystkie te tryby są definiowane przez system Windows.All of these modes are defined by Windows. Dwa standardowe tryby mapowania, MM_ISOTROPIC i MM_ANISOTROPIC, nie są używane w programie CScrollView .Two standard mapping modes, MM_ISOTROPIC and MM_ANISOTROPIC, are not used for CScrollView. Biblioteka klas udostępnia SetScaleToFitSize funkcję członkowską do skalowania widoku do rozmiaru okna.The class library provides the SetScaleToFitSize member function for scaling the view to window size. W kolumnie trzy w powyższej tabeli opisano orientację współrzędnych.Column three in the table above describes the coordinate orientation.

sizeTotalsizeTotal
Łączny rozmiar widoku przewijania.The total size of the scroll view. cxElement członkowski zawiera poziomy.The cx member contains the horizontal extent. cyElement członkowski zawiera zakres w pionie.The cy member contains the vertical extent. Rozmiary są w jednostkach logicznych.Sizes are in logical units. Oba cx i cy muszą być większe lub równe 0.Both cx and cy must be greater than or equal to 0.

sizePagesizePage
Ilości w poziomie i pionie, które mają być przewijane w każdym kierunku w odpowiedzi na kliknięcie myszą w wałku paska przewijania.The horizontal and vertical amounts to scroll in each direction in response to a mouse click in a scroll-bar shaft. cxElement członkowski zawiera wielkość poziomą.The cx member contains the horizontal amount. cyElement członkowski zawiera kwotę pionową.The cy member contains the vertical amount.

sizeLinesizeLine
Ilości w poziomie i pionie, które mają być przewijane w każdym kierunku w odpowiedzi na kliknięcie myszy w strzałce przewijania.The horizontal and vertical amounts to scroll in each direction in response to a mouse click in a scroll arrow. cxElement członkowski zawiera wielkość poziomą.The cx member contains the horizontal amount. cyElement członkowski zawiera kwotę pionową.The cy member contains the vertical amount.

UwagiRemarks

Wywołaj je w przesłonięciu OnUpdate funkcji składowej, aby dostosować właściwości przewijania, gdy na przykład dokument jest początkowo wyświetlany lub zmienia rozmiar.Call it in your override of the OnUpdate member function to adjust scrolling characteristics when, for example, the document is initially displayed or when it changes size.

Informacje o rozmiarze są zazwyczaj uzyskiwane ze skojarzonego dokumentu widoku przez wywołanie funkcji składowej dokumentu, która może zostać wywołana GetMyDocSize , z klasy dokumentu pochodnego.You will typically obtain size information from the view's associated document by calling a document member function, perhaps called GetMyDocSize, that you supply with your derived document class. Poniższy kod przedstawia takie podejście:The following code shows this approach:

CMyScrollDoc* pMyDoc = (CMyScrollDoc*)GetDocument();
SetScrollSizes(nMapMode, pMyDoc->GetMyDocSize());

Czasami może być konieczne ustawienie stałego rozmiaru, tak jak w poniższym kodzie:Alternatively, you might sometimes need to set a fixed size, as in the following code:

SetScrollSizes(nMapMode, CSize(100, 100));

Należy ustawić tryb mapowania na dowolny z trybów mapowania systemu Windows, z wyjątkiem MM_ISOTROPIC lub MM_ANISOTROPIC.You must set the mapping mode to any of the Windows mapping modes except MM_ISOTROPIC or MM_ANISOTROPIC. Jeśli chcesz użyć trybu mapowania nieograniczonego, wywołaj SetScaleToFitSize funkcję członkowską zamiast SetScrollSizes .If you want to use an unconstrained mapping mode, call the SetScaleToFitSize member function instead of SetScrollSizes.

PrzykładExample

void CMyScrollView::OnUpdate(CView* /*pSender*/, LPARAM /*lHint*/,
   CObject* /*pHint*/)
{
   // Implement a GetMyDocSize() member function in 
   // your document class; it returns a CSize.
   CMyScrollDoc* pMyDoc = (CMyScrollDoc*)GetDocument();
   SetScrollSizes(MM_LOENGLISH, pMyDoc->GetMyDocSize());
   ResizeParentToFit();   // Default bShrinkOnly argument
}
void CMyScrollView::OnInitialUpdate()
{
   CScrollView::OnInitialUpdate();

   // The GetMyDocSize() member function is implemented in 
   // your document class. The return type is CSize.
   CMyScrollDoc* pMyDoc = (CMyScrollDoc*)GetDocument();
   SetScrollSizes(MM_TEXT, pMyDoc->GetMyDocSize());
}

Zobacz takżeSee also

Przykład DIBLOOK MFCMFC Sample DIBLOOK
Klasa CViewCView Class
Wykres hierarchiiHierarchy Chart
Klasa CViewCView Class
Klasa CSplitterWndCSplitterWnd Class