Класс КскроллвиевCScrollView Class

Объект CView с возможностями прокрутки.A CView with scrolling capabilities.

СинтаксисSyntax

class CScrollView : public CView

ЧленыMembers

Защищенные конструкторыProtected Constructors

ИмяName ОписаниеDescription
Кскроллвиев:: КскроллвиевCScrollView::CScrollView Формирует объект CScrollView.Constructs a CScrollView object.

Открытые методыPublic Methods

nameName ОписаниеDescription
Кскроллвиев:: ЧеккскроллбарсCScrollView::CheckScrollBars Указывает, имеет ли прокручиваемое представление горизонтальные и вертикальные полосы прокрутки.Indicates whether the scroll view has horizontal and vertical scroll bars.
Кскроллвиев:: ФиллаутсидеректCScrollView::FillOutsideRect Заполняет область представления за пределами области прокрутки.Fills the area of a view outside the scrolling area.
Кскроллвиев:: ЖетдевицескроллпоситионCScrollView::GetDeviceScrollPosition Возвращает текущее расположение прокрутки в единицах устройства.Gets the current scroll position in device units.
Кскроллвиев:: ЖетдевицескроллсизесCScrollView::GetDeviceScrollSizes Возвращает текущий режим сопоставления, общий размер, а также размеры линий и страниц для прокручиваемого представления.Gets the current mapping mode, the total size, and the line and page sizes of the scrollable view. Размеры задаются в единицах устройства.Sizes are in device units.
Кскроллвиев:: ЖетскроллпоситионCScrollView::GetScrollPosition Возвращает текущее расположение прокрутки в логических единицах.Gets the current scroll position in logical units.
Кскроллвиев:: GetTotalSizeCScrollView::GetTotalSize Возвращает общий размер представления прокрутки в логических устройствах.Gets the total size of the scroll view in logical units.
Кскроллвиев:: РесизепаренттофитCScrollView::ResizeParentToFit Заставляет размер представления определять размер фрейма.Causes the size of the view to dictate the size of its frame.
Кскроллвиев:: СкроллтопоситионCScrollView::ScrollToPosition Прокручивает представление до заданной точки, заданной в логических единицах.Scrolls the view to a given point, specified in logical units.
Кскроллвиев:: СетскалетофитсизеCScrollView::SetScaleToFitSize Переводит представление прокрутки в режим масштабирования по размеру.Puts the scroll view into scale-to-fit mode.
Кскроллвиев:: СетскроллсизесCScrollView::SetScrollSizes Задает режим сопоставления для представления прокрутки, общий размер, горизонтальную и вертикальную прокрутку.Sets the scroll view's mapping mode, total size, and horizontal and vertical scroll amounts.

КомментарииRemarks

Вы можете выполнять стандартную прокрутку в любом классе, производном от CView , переопределяя сопоставленные в сообщении функции-члены Онхскролл и онвскролл .You can handle standard scrolling yourself in any class derived from CView by overriding the message-mapped OnHScroll and OnVScroll member functions. Но CScrollView в его возможности добавлены следующие функции CView :But CScrollView adds the following features to its CView capabilities:

  • Он управляет размерами окон и окна просмотра и режимами сопоставления.It manages window and viewport sizes and mapping modes.

  • Он автоматически прокручивается в ответ на сообщения на полосе прокрутки.It scrolls automatically in response to scroll-bar messages.

  • Он автоматически прокручивается в ответ на сообщения с клавиатуры, без прокрутки мыши или с помощью колеса IntelliMouse.It scrolls automatically in response to messages from the keyboard, a non-scrolling mouse, or the IntelliMouse wheel.

Чтобы автоматически выполнять прокрутку в ответ на сообщения с клавиатуры, добавьте WM_KEYDOWN сообщение и проверьте VK_DOWN VK_PREV и вызовите сетскроллпос.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.

Вы можете работать с прокруткой колесика мыши, переопределяя сопоставленные в сообщении функции-члены онмаусевхил и онрегистередмаусевхил .You can handle mouse wheel scrolling yourself by overriding the message-mapped OnMouseWheel and OnRegisteredMouseWheel member functions. Как CScrollView и в случае, эти функции элементов поддерживают рекомендованное поведение для WM_MOUSEWHEEL, сообщение поворота колесика.As they are for CScrollView, these member functions support the recommended behaviour for WM_MOUSEWHEEL, the wheel rotation message.

Чтобы воспользоваться преимуществами автоматической прокрутки, необходимо создать класс представления, производный от, CScrollView а не от CView .To take advantage of automatic scrolling, derive your view class from CScrollView instead of from CView. При первом создании представления, если требуется вычислить размер прокручиваемого представления в зависимости от размера документа, вызовите SetScrollSizes функцию-член из переопределения метода CView:: Онинитиалупдате или 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. (Для запроса размера документа необходимо написать собственный код.(You must write your own code to query the size of the document. Пример см. в примере Scribble.)For an example, see the Scribble sample.)

Вызов SetScrollSizes функции члена задает режим сопоставления представления, общие размеры представления прокрутки и величины для горизонтальной и вертикальной прокрутки.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. Все размеры находятся в логических единицах.All sizes are in logical units. Логический размер представления обычно вычисляется на основе данных, хранящихся в документе, но в некоторых случаях может потребоваться указать фиксированный размер.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. Примеры обоих подходов см. в разделе кскроллвиев:: сетскроллсизес.For examples of both approaches, see CScrollView::SetScrollSizes.

Вы указываете величины для горизонтальной и вертикальной прокрутки в логических единицах.You specify the amounts to scroll horizontally and vertically in logical units. По умолчанию, если пользователь щелкает полосу прокрутки Шафт за пределами ползунка, CScrollView прокручивает страницу.By default, if the user clicks a scroll bar shaft outside of the scroll box, CScrollView scrolls a "page." Если пользователь нажимает стрелку прокрутки в любом конце полосы прокрутки, CScrollView Прокручивает строку.If the user clicks a scroll arrow at either end of a scroll bar, CScrollView scrolls a "line." По умолчанию страница имеет размер 1/10 из общего размера представления; линия составляет 1/10 из размера страницы.By default, a page is 1/10 of the total size of the view; a line is 1/10 of the page size. Переопределите эти значения по умолчанию, передав пользовательские размеры в SetScrollSizes функции члена.Override these default values by passing custom sizes in the SetScrollSizes member function. Например, для горизонтального размера можно задать некоторую часть ширины общего размера и вертикальный размер до высоты строки в текущем шрифте.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.

Вместо прокрутки CScrollView могут автоматически масштабировать представление до текущего размера окна.Instead of scrolling, CScrollView can automatically scale the view to the current window size. В этом режиме представление не имеет полос прокрутки, а логическое представление растягивается или сжимается в точном соответствии с клиентской областью окна.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. Чтобы использовать эту возможность масштабирования по размеру, вызовите кскроллвиев:: сетскалетофитсизе.To use this scale-to-fit capability, call CScrollView::SetScaleToFitSize. (Вызовите SetScaleToFitSize либо SetScrollSizes , либо, но не оба.)(Call either SetScaleToFitSize or SetScrollSizes, but not both.)

Перед OnDraw вызовом функции-члена производного класса представления CScrollView автоматически настраивает источник окна просмотра для CPaintDC объекта контекста устройства, к которому он передается 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.

Чтобы настроить источник окна просмотра для окна прокрутки, CScrollView переопределяет метод CView:: онпрепаредк.To adjust the viewport origin for the scrolling window, CScrollView overrides CView::OnPrepareDC. Эта корректировка выполняется автоматически для CPaintDC контекста устройства, который CScrollView передается в OnDraw , но его необходимо вызывать CScrollView::OnPrepareDC для любых других контекстов устройств, которые вы используете, например 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. Можно переопределить, CScrollView::OnPrepareDC чтобы задать перо, цвет фона и другие атрибуты рисования, но вызвать базовый класс для масштабирования.You can override CScrollView::OnPrepareDC to set the pen, background color, and other drawing attributes, but call the base class to do scaling.

Полосы прокрутки могут отображаться в трех местах относительно представления, как показано в следующих случаях.Scroll bars can appear in three places relative to a view, as shown in the following cases:

  • Стандартные полосы прокрутки в стиле окна можно задать для представления с помощью стилей WS_HSCROLL и WS_VSCROLLWindows.Standard window-style scroll bars can be set for the view using the WS_HSCROLL and WS_VSCROLLWindows Styles.

  • Элементы управления "полоса прокрутки" также можно добавлять в фрейм, содержащий представление. в этом случае платформа пересылает WM_HSCROLL и WM_VSCROLL сообщения из окна фрейма в текущее активное представление.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.

  • Платформа также пересылает сообщения прокрутки от CSplitterWnd элемента управления Splitter в текущую активную область разделителя (представление).The framework also forwards scroll messages from a CSplitterWnd splitter control to the currently active splitter pane (a view). При помещении в CSplitterWnd с общими полосами прокрутки CScrollView объект будет использовать общие, а не создавать собственный.When placed in a CSplitterWnd with shared scroll bars, a CScrollView object will use the shared ones rather than creating its own.

Дополнительные сведения об использовании CScrollView см. в разделе архитектура документа/представления и классы производного представления, доступные в MFC.For more information on using CScrollView, see Document/View Architecture and Derived View Classes Available in MFC.

Иерархия наследованияInheritance Hierarchy

CObjectCObject

CCmdTargetCCmdTarget

CWndCWnd

CViewCView

CScrollView

ТребованияRequirements

Заголовок: afxwin.hHeader: afxwin.h

Кскроллвиев:: ЧеккскроллбарсCScrollView::CheckScrollBars

Вызовите эту функцию члена, чтобы определить, имеет ли представление прокрутки горизонтальную и вертикальную черту.Call this member function to determine if the scroll view has horizontal and vertical bars.

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

ПараметрыParameters

бхашорзбарbHasHorzBar
Показывает, что в приложении есть горизонтальная полоса прокрутки.Indicates the application has a horizontal scroll bar.

бхасвертбарbHasVertBar
Показывает, что в приложении есть вертикальная полоса прокрутки.Indicates the application has a vertical scroll bar.

Кскроллвиев:: КскроллвиевCScrollView::CScrollView

Формирует объект CScrollView.Constructs a CScrollView object.

CScrollView();

КомментарииRemarks

Необходимо вызвать либо, SetScrollSizes либо SetScaleToFitSize до того, как будет использоваться представление прокрутки.You must call either SetScrollSizes or SetScaleToFitSize before the scroll view is usable.

Кскроллвиев:: ФиллаутсидеректCScrollView::FillOutsideRect

Вызовите, FillOutsideRect чтобы заполнить область представления, которая находится за пределами области прокрутки.Call FillOutsideRect to fill the area of the view that appears outside of the scrolling area.

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

ПараметрыParameters

ХозяинpDC
Контекст устройства, в котором должно выполняться заполнение.Device context in which the filling is to be done.

пбрушpBrush
Кисть, с которой заполняется область.Brush with which the area is to be filled.

КомментарииRemarks

Используйте FillOutsideRect в функции обработчика в режиме прокрутки OnEraseBkgnd , чтобы предотвратить чрезмерное перерисовку фона.Use FillOutsideRect in your scroll view's OnEraseBkgnd handler function to prevent excessive background repainting.

ПримерExample

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

Кскроллвиев:: ЖетдевицескроллпоситионCScrollView::GetDeviceScrollPosition

Вызывайте GetDeviceScrollPosition , когда требуется текущее горизонтальное и вертикальное положение полей прокрутки в полосах прокрутки.Call GetDeviceScrollPosition when you need the current horizontal and vertical positions of the scroll boxes in the scroll bars.

CPoint GetDeviceScrollPosition() const;

Возвращаемое значениеReturn Value

Горизонтальное и вертикальное положение полей прокрутки (в единицах устройства) в виде CPoint объекта.The horizontal and vertical positions (in device units) of the scroll boxes as a CPoint object.

КомментарииRemarks

Эта пара координат соответствует расположению в документе, в котором прокручивается левый верхний угол представления.This coordinate pair corresponds to the location in the document to which the upper-left corner of the view has been scrolled. Это полезно для позиционирования позиций мыши на устройствах для прокрутки.This is useful for offsetting mouse-device positions to scroll-view device positions.

GetDeviceScrollPosition Возвращает значения в единицах устройства.GetDeviceScrollPosition returns values in device units. Если требуются логические устройства, используйте GetScrollPosition вместо них.If you want logical units, use GetScrollPosition instead.

Кскроллвиев:: ЖетдевицескроллсизесCScrollView::GetDeviceScrollSizes

GetDeviceScrollSizes Возвращает текущий режим сопоставления, общий размер, а также размеры линий и страниц для прокручиваемого представления.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;

ПараметрыParameters

нмапмодеnMapMode
Возвращает текущий режим сопоставления для этого представления.Returns the current mapping mode for this view. Список возможных значений см. в разделе SetScrollSizes.For a list of possible values, see SetScrollSizes.

сизетоталsizeTotal
Возвращает текущий общий размер представления прокрутки в единицах устройства.Returns the current total size of the scroll view in device units.

сизепажеsizePage
Возвращает текущие величины по горизонтали и вертикали для прокрутки в каждом направлении в ответ на щелчок мыши в Шафт полосы прокрутки.Returns the current horizontal and vertical amounts to scroll in each direction in response to a mouse click in a scroll-bar shaft. cxЭлемент содержит горизонтальную величину.The cx member contains the horizontal amount. cyЭлемент содержит вертикальную величину.The cy member contains the vertical amount.

сизелинеsizeLine
Возвращает текущие горизонтальные и вертикальные величины прокрутки в каждом направлении в ответ на щелчок мышью в стрелке прокрутки.Returns the current horizontal and vertical amounts to scroll in each direction in response to a mouse click in a scroll arrow. cxЭлемент содержит горизонтальную величину.The cx member contains the horizontal amount. cyЭлемент содержит вертикальную величину.The cy member contains the vertical amount.

КомментарииRemarks

Размеры задаются в единицах устройства.Sizes are in device units. Эта функция-член редко называется.This member function is rarely called.

Кскроллвиев:: ЖетскроллпоситионCScrollView::GetScrollPosition

Вызывайте GetScrollPosition , когда требуется текущее горизонтальное и вертикальное положение полей прокрутки в полосах прокрутки.Call GetScrollPosition when you need the current horizontal and vertical positions of the scroll boxes in the scroll bars.

CPoint GetScrollPosition() const;

Возвращаемое значениеReturn Value

Горизонтальные и вертикальные позиции (в логических единицах) полей прокрутки в виде CPoint объекта.The horizontal and vertical positions (in logical units) of the scroll boxes as a CPoint object.

КомментарииRemarks

Эта пара координат соответствует расположению в документе, в котором прокручивается левый верхний угол представления.This coordinate pair corresponds to the location in the document to which the upper-left corner of the view has been scrolled.

GetScrollPosition Возвращает значения в логических единицах.GetScrollPosition returns values in logical units. Если вы хотите использовать единицы устройства, используйте GetDeviceScrollPosition вместо него.If you want device units, use GetDeviceScrollPosition instead.

Кскроллвиев:: GetTotalSizeCScrollView::GetTotalSize

Вызовите метод GetTotalSize , чтобы получить текущие размеры по горизонтали и вертикали для представления прокрутки.Call GetTotalSize to retrieve the current horizontal and vertical sizes of the scroll view.

CSize GetTotalSize() const;

Возвращаемое значениеReturn Value

Общий размер представления прокрутки в логических устройствах.The total size of the scroll view in logical units. Размер по горизонтали находится в элементе cx CSize возвращаемого значения.The horizontal size is in the cx member of the CSize return value. Размер по вертикали находится в элементе cy .The vertical size is in the cy member.

Кскроллвиев:: РесизепаренттофитCScrollView::ResizeParentToFit

Вызовите ResizeParentToFit , чтобы позволить размеру представления определять размер окна фрейма.Call ResizeParentToFit to let the size of your view dictate the size of its frame window.

void ResizeParentToFit(BOOL bShrinkOnly = TRUE);

ПараметрыParameters

бшринконлиbShrinkOnly
Тип изменения размера для выполнения.The kind of resizing to perform. Значение по умолчанию TRUE, при необходимости сжимает окно фрейма.The default value, TRUE, shrinks the frame window if appropriate. Полосы прокрутки по-прежнему будут отображаться для крупных представлений или мелких окон фрейма.Scroll bars will still appear for large views or small frame windows. Значение FALSE заставляет представление всегда изменять размер окна фрейма в точности.A value of FALSE causes the view always to resize the frame window exactly. Это может быть несколько опасным, так как окно фрейма может оказаться слишком большим, чтобы уместиться внутри окна фрейма интерфейса MDI или экрана.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.

КомментарииRemarks

Это рекомендуется только для представлений в окнах дочернего фрейма MDI.This is recommended only for views in MDI child frame windows. Используйте ResizeParentToFit в OnInitialUpdate функции обработчика производного CScrollView класса.Use ResizeParentToFit in the OnInitialUpdate handler function of your derived CScrollView class. Пример этой функции члена см. в разделе кскроллвиев:: сетскроллсизес.For an example of this member function, see CScrollView::SetScrollSizes.

ResizeParentToFit Предполагается, что установлен размер окна представления.ResizeParentToFit assumes that the size of the view window has been set. Если размер окна представления не был задан при ResizeParentToFit вызове метода, вы получите утверждение.If the view window size has not been set when ResizeParentToFit is called, you will get an assertion. Чтобы убедиться, что это не происходит, перед вызовом выполните следующий вызов ResizeParentToFit :To ensure that this does not happen, make the following call before calling ResizeParentToFit:

GetParentFrame()->RecalcLayout();

Кскроллвиев:: СкроллтопоситионCScrollView::ScrollToPosition

Вызов ScrollToPosition для прокрутки до заданной точки в представлении.Call ScrollToPosition to scroll to a given point in the view.

void ScrollToPosition(POINT pt);

ПараметрыParameters

птpt
Точка для прокрутки в логических единицах.The point to scroll to, in logical units. xЭлемент должен быть положительным значением (больше или равно 0, вплоть до общего размера представления).The x member must be a positive value (greater than or equal to 0, up to the total size of the view). То же справедливо для члена, y Если режим сопоставления — MM_TEXT.The same is true for the y member when the mapping mode is MM_TEXT. yЭлемент является отрицательным в режимах сопоставления, кроме MM_TEXT.The y member is negative in mapping modes other than MM_TEXT.

КомментарииRemarks

Представление будет прокручиваться, чтобы эта точка находящегося в левом верхнем углу окна.The view will be scrolled so that this point is at the upper-left corner of the window. Эта функция-член не должна вызываться, если представление масштабируется по размеру.This member function must not be called if the view is scaled to fit.

Кскроллвиев:: СетскалетофитсизеCScrollView::SetScaleToFitSize

Вызовите, SetScaleToFitSize Если необходимо автоматически масштабировать размер окна просмотра до текущего размера окна.Call SetScaleToFitSize when you want to scale the viewport size to the current window size automatically.

void SetScaleToFitSize(SIZE sizeTotal);

ПараметрыParameters

сизетоталsizeTotal
Размеры по горизонтали и вертикали, до которых будет масштабироваться представление.The horizontal and vertical sizes to which the view is to be scaled. Размер представления прокрутки измеряется в логических единицах.The scroll view's size is measured in logical units. Размер по горизонтали содержится в элементе cx .The horizontal size is contained in the cx member. Размер по вертикали содержится в элементе cy .The vertical size is contained in the cy member. Оба значения cx и cy должны быть больше или равны 0.Both cx and cy must be greater than or equal to 0.

КомментарииRemarks

При использовании полос прокрутки в любое время может быть видима только часть логического представления.With scroll bars, only a portion of the logical view may be visible at any time. Но с возможностью масштабирования по размеру представление не имеет полос прокрутки, а логическое представление растягивается или сжимается в точном соответствии с областью окна клиента.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. При изменении размера окна представление отображает свои данные в новом масштабе в зависимости от размера окна.When the window is resized, the view draws its data at a new scale based on the size of the window.

Как правило, вызов выполняется SetScaleToFitSize в переопределении OnInitialUpdate функции члена представления.You'll typically place the call to SetScaleToFitSize in your override of the view's OnInitialUpdate member function. Если автоматическое масштабирование не требуется, вызовите SetScrollSizes функцию члена.If you do not want automatic scaling, call the SetScrollSizes member function instead.

SetScaleToFitSize может использоваться для реализации операции "масштаб по размеру".SetScaleToFitSize can be used to implement a "Zoom to Fit" operation. Используйте SetScrollSizes для повторной инициализации прокрутки.Use SetScrollSizes to reinitialize scrolling.

SetScaleToFitSize Предполагается, что установлен размер окна представления.SetScaleToFitSize assumes that the size of the view window has been set. Если размер окна представления не был задан при SetScaleToFitSize вызове метода, вы получите утверждение.If the view window size has not been set when SetScaleToFitSize is called, you will get an assertion. Чтобы убедиться, что это не происходит, перед вызовом выполните следующий вызов SetScaleToFitSize :To ensure that this does not happen, make the following call before calling SetScaleToFitSize:

GetParentFrame()->RecalcLayout();

Кскроллвиев:: СетскроллсизесCScrollView::SetScrollSizes

Вызов SetScrollSizes , когда представление собирается обновиться.Call SetScrollSizes when the view is about to be updated.

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

ПараметрыParameters

нмапмодеnMapMode
Режим сопоставления, заданный для этого представления.The mapping mode to set for this view. Возможные значения:Possible values include:

Режим сопоставленияMapping Mode Логическая единицаLogical Unit Положительное расширение оси y...Positive y-axis Extends...
MM_TEXTMM_TEXT 1 пиксель1 pixel СверхуDownward
MM_HIMETRICMM_HIMETRIC 0,01 мм0.01 mm УказательUpward
MM_TWIPSMM_TWIPS 1/1440 в1/1440 in УказательUpward
MM_HIENGLISHMM_HIENGLISH 0,001 в0.001 in УказательUpward
MM_LOMETRICMM_LOMETRIC 0,1 мм0.1 mm УказательUpward
MM_LOENGLISHMM_LOENGLISH 0,01 в0.01 in УказательUpward

Все эти режимы определяются Windows.All of these modes are defined by Windows. Для не используются два стандартных режима сопоставления: MM_ISOTROPIC и MM_ANISOTROPIC CScrollView .Two standard mapping modes, MM_ISOTROPIC and MM_ANISOTROPIC, are not used for CScrollView. Библиотека классов предоставляет SetScaleToFitSize функцию члена для масштабирования представления до размера окна.The class library provides the SetScaleToFitSize member function for scaling the view to window size. В столбце 3 в приведенной выше таблице описывается ориентация координат.Column three in the table above describes the coordinate orientation.

сизетоталsizeTotal
Общий размер представления прокрутки.The total size of the scroll view. cxЭлемент содержит горизонтальный экстент.The cx member contains the horizontal extent. cyЭлемент содержит вертикальный экстент.The cy member contains the vertical extent. Размеры находятся в логических единицах.Sizes are in logical units. Оба значения cx и cy должны быть больше или равны 0.Both cx and cy must be greater than or equal to 0.

сизепажеsizePage
Горизонтальные и вертикальные величины прокрутки в каждом направлении в ответ на щелчок мыши в Шафт полосы прокрутки.The horizontal and vertical amounts to scroll in each direction in response to a mouse click in a scroll-bar shaft. cxЭлемент содержит горизонтальную величину.The cx member contains the horizontal amount. cyЭлемент содержит вертикальную величину.The cy member contains the vertical amount.

сизелинеsizeLine
Горизонтальные и вертикальные величины прокрутки в каждом направлении в ответ на щелчок мышью в стрелке прокрутки.The horizontal and vertical amounts to scroll in each direction in response to a mouse click in a scroll arrow. cxЭлемент содержит горизонтальную величину.The cx member contains the horizontal amount. cyЭлемент содержит вертикальную величину.The cy member contains the vertical amount.

КомментарииRemarks

Вызовите его в переопределении OnUpdate функции-члена, чтобы настроить характеристики прокрутки, когда, например, документ изначально отображается или изменяется его размер.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.

Обычно сведения о размере извлекаются из документа, связанного с представлением, путем вызова функции-члена документа, которая, возможно, называется GetMyDocSize , которую вы предоставляете в классе производного документа.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. Этот подход показан в следующем коде:The following code shows this approach:

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

Кроме того, иногда может потребоваться задать фиксированный размер, как показано в следующем коде:Alternatively, you might sometimes need to set a fixed size, as in the following code:

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

Необходимо задать режим сопоставления для любого из режимов сопоставления Windows, кроме MM_ISOTROPIC или MM_ANISOTROPIC.You must set the mapping mode to any of the Windows mapping modes except MM_ISOTROPIC or MM_ANISOTROPIC. Если вы хотите использовать режим неограниченного сопоставления, вызовите SetScaleToFitSize функцию члена, а не SetScrollSizes .If you want to use an unconstrained mapping mode, call the SetScaleToFitSize member function instead of SetScrollSizes.

ПримерExample

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());
}

См. также разделSee also

Пример DIBLOOK в MFCMFC Sample DIBLOOK
Класс CViewCView Class
Иерархическая диаграммаHierarchy Chart
Класс CViewCView Class
Класс CSplitterWndCSplitterWnd Class