Поделиться через


Класс CScrollBar

Предоставляет функции элемента управления полосой прокрутки Windows.

Синтаксис

class CScrollBar : public CWnd

Участники

Открытые конструкторы

Имя Описание
CScrollBar::CScrollBar Формирует объект CScrollBar.

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

Имя Описание
CScrollBar::Create Создает полосу прокрутки Windows и присоединяет ее к объекту CScrollBar .
CScrollBar::EnableScrollBar Включает или выключает одну или обе стрелки полосы прокрутки.
CScrollBar::GetScrollBarInfo Извлекает сведения о полосе SCROLLBARINFO прокрутки с помощью структуры.
CScrollBar::GetScrollInfo Извлекает сведения о полосе прокрутки.
CScrollBar::GetScrollLimit Извлекает ограничение полосы прокрутки
CScrollBar::GetScrollPos Извлекает текущее положение ползунка.
CScrollBar::GetScrollRange Извлекает текущие минимальные и максимальные позиции полосы прокрутки для заданной полосы прокрутки.
CScrollBar::SetScrollInfo Задает сведения о полосе прокрутки.
CScrollBar::SetScrollPos Задает текущую позицию поля прокрутки.
CScrollBar::SetScrollRange Задает для указанной полосы прокрутки положения минимума и максимума.
CScrollBar::ShowScrollBar Отображает или скрывает полосу прокрутки.

Замечания

Вы создаете элемент управления полосой прокрутки двумя шагами. Сначала вызовите конструктор CScrollBar для создания CScrollBar объекта, а затем вызовите Create функцию-член, чтобы создать элемент управления полосой прокрутки Windows и присоединить его к объекту CScrollBar .

При создании CScrollBar объекта в диалоговом окне (с помощью ресурса диалогового окна) CScrollBar пользователь автоматически уничтожается при закрытии диалогового окна.

Если вы создаете CScrollBar объект в окне, его также может потребоваться уничтожить.

Если вы создаете CScrollBar объект в стеке, он автоматически уничтожается. Если вы создаете CScrollBar объект в куче с помощью new функции, необходимо вызвать delete объект, чтобы уничтожить его, когда пользователь завершает полосу прокрутки Windows.

При выделении памяти в CScrollBar объекте переопределите CScrollBar деструктор, чтобы удалить выделения.

Дополнительные сведения об использовании CScrollBarсм. в разделе "Элементы управления".

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

CObject

CCmdTarget

CWnd

CScrollBar

Требования

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

CScrollBar::Create

Создает полосу прокрутки Windows и присоединяет ее к объекту CScrollBar .

virtual BOOL Create(
    DWORD dwStyle,
    const RECT& rect,
    CWnd* pParentWnd,
    UINT nID);

Параметры

dwStyle
Задает стиль полосы прокрутки. Примените любое сочетание стилей полос прокрутки к полосе прокрутки.

rect
Указывает размер и позицию полосы прокрутки. Может быть либо RECT структура, CRect либо объект.

pParentWnd
Указывает родительское окно полосы прокрутки, обычно CDialog объект. Это не должно быть NULL.

nID
Идентификатор элемента управления полосы прокрутки.

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

Имеет ненулевое значение в случае успешного выполнения, иначе — 0.

Замечания

Вы создаете CScrollBar объект на двух шагах. Сначала вызовите конструктор, который создает CScrollBar объект, а затем вызов Create, который создает и инициализирует связанную полосу прокрутки Windows и присоединяет ее к объекту CScrollBar .

Примените следующие стили окон к полосе прокрутки:

  • WS_CHILD Всегда

  • WS_VISIBLE Обычно

  • WS_DISABLED Редко

  • WS_GROUP Группирование элементов управления

Пример

// Example 1:
// Create a horizontal CScrollBar control as a child window of CMyDialog
// class (a CDialog-derived class). The scroll bar is NOT visible until the
// call ShowScrollBar() is made. m_ScrollBarHorz is of type CScrollBar class,
// and it is a member variable in CMyDialog class.
VERIFY(m_ScrollBarHorz.Create(SBS_HORZ | SBS_TOPALIGN | WS_CHILD,
                              CRect(5, 5, 100, 30), this, IDC_SCROLLBARCTRL));

m_ScrollBarHorz.ShowScrollBar();

// Example 2:
// Create a vertical CScrollBar control as a child window of CMyDialog
// class (a CDialog-derived class). m_ScrollBarVert is of type CScrollBar
// class, and it is a member variable in CMyDialog class.
VERIFY(m_ScrollBarVert.Create(SBS_VERT | SBS_LEFTALIGN | WS_CHILD |
                                  WS_VISIBLE,
                              CRect(5, 30, 30, 130), this, IDC_SCROLLBARCTRL));

CScrollBar::CScrollBar

Формирует объект CScrollBar.

CScrollBar();

Замечания

После создания объекта вызовите Create функцию-член, чтобы создать и инициализировать полосу прокрутки Windows.

Пример

CScrollBar m_ScrollBarHorz;

CScrollBar::EnableScrollBar

Включает или выключает одну или обе стрелки полосы прокрутки.

BOOL EnableScrollBar(UINT nArrowFlags = ESB_ENABLE_BOTH);

Параметры

nArrowFlags
Указывает, включены ли или отключаются стрелки прокрутки, и какие стрелки включены или отключены. Этот параметр может принимать одно из следующих значений :

  • ESB_ENABLE_BOTH Включает обе стрелки полосы прокрутки.

  • ESB_DISABLE_LTUP Отключает стрелку влево горизонтальной полосы прокрутки или стрелку вверх вертикальной полосы прокрутки.

  • ESB_DISABLE_RTDN Отключает стрелку вправо горизонтальной полосы прокрутки или стрелку вниз вертикальной полосы прокрутки.

  • ESB_DISABLE_BOTH Отключает обе стрелки полосы прокрутки.

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

Ненулевое значение, если стрелки включены или отключены, как указано; в противном случае значение 0, указывающее, что стрелки уже находятся в запрошенном состоянии или произошла ошибка.

Пример

Пример см. в примере CScrollBar::SetScrollRange.

CScrollBar::GetScrollBarInfo

Извлекает данные о полосе прокрутки, содержащиеся в структуре SCROLLBARINFO.

BOOL GetScrollBarInfo(PSCROLLBARINFO pScrollInfo) const;

Параметры

pScrollInfo
Указатель на структуру SCROLLBARINFO .

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

Возвращает успешность TRUE при FALSE сбое.

Замечания

Эта функция-член эмулирует функциональные возможности SBM_SCROLLBARINFO сообщения, как описано в пакете SDK для Windows.

CScrollBar::GetScrollInfo

Извлекает данные о полосе прокрутки, содержащиеся в структуре SCROLLINFO.

BOOL GetScrollInfo(
    LPSCROLLINFO lpScrollInfo,
    UINT nMask = SIF_ALL);

Параметры

lpScrollInfo
Указатель на структуру SCROLLINFO . Дополнительные сведения об этой структуре см. в пакете SDK для Windows.

nMask
Задает параметры полосы прокрутки для извлечения. Обычное использование, SIF_ALLуказывает сочетание SIF_PAGE, SIF_POSи SIF_TRACKPOSSIF_RANGE. Дополнительные сведения о значениях см. в разделе SCROLLINFO nMask .

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

Если сообщение извлекло какие-либо значения, возвращается TRUE. В противном случае возвращается FALSE.

Замечания

GetScrollInfo позволяет приложениям использовать 32-разрядные позиции прокрутки.

Структура SCROLLINFO содержит сведения о полосе прокрутки, включая минимальное и максимальное положение прокрутки, размер страницы и положение поля прокрутки (большой палец). SCROLLINFO Дополнительные сведения об изменении структуры по умолчанию см. в разделе структуры пакета SDK для Windows.

Обработчики сообщений Windows MFC, указывающие позицию полосы прокрутки, CWnd::OnHScrollи CWnd::OnVScrollпредоставляют только 16 битов позиций. GetScrollInfo и SetScrollInfo предоставьте 32 бита данных о положении полосы прокрутки. Таким образом, приложение может вызываться GetScrollInfo при обработке CWnd::OnHScroll или CWnd::OnVScroll получать 32-разрядные данные о положении полосы прокрутки.

Пример

Пример см. в примере CWnd::OnHScroll.

CScrollBar::GetScrollLimit

Извлекает максимальное положение прокрутки полосы прокрутки.

int GetScrollLimit();

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

Указывает максимальную позицию полосы прокрутки в случае успешного выполнения; в противном случае — 0.

Пример

Пример см. в примере CWnd::OnHScroll.

CScrollBar::GetScrollPos

Извлекает текущее положение ползунка.

int GetScrollPos() const;

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

Указывает текущую позицию поля прокрутки в случае успешного выполнения; в противном случае — 0.

Замечания

Текущая позиция — это относительное значение, которое зависит от текущего диапазона прокрутки. Например, если диапазон прокрутки составляет от 100 до 200, а поле прокрутки находится в середине панели, текущее положение равно 150.

Пример

Пример см. в примере CWnd::OnHScroll.

CScrollBar::GetScrollRange

Копирует текущие минимальные и максимальные позиции полосы прокрутки для заданной полосы прокрутки в расположения, заданные lpMinPos и lpMaxPos.

void GetScrollRange(
    LPINT lpMinPos,
    LPINT lpMaxPos) const;

Параметры

lpMinPos
Указывает на целочисленную переменную, которая требуется получить минимальную позицию.

lpMaxPos
Указывает на целочисленную переменную, которая должна получать максимальную позицию.

Замечания

Диапазон по умолчанию для элемента управления полосой прокрутки пуст (оба значения — 0).

Пример

Пример см. в примере CWnd::OnHScroll.

CScrollBar::SetScrollInfo

Задает сведения, которые SCROLLINFO структура хранит о полосе прокрутки.

BOOL SetScrollInfo(
    LPSCROLLINFO lpScrollInfo,
    BOOL bRedraw = TRUE);

Параметры

lpScrollInfo
Указатель на структуру SCROLLINFO .

bRedraw
Указывает, следует ли перезапись полосы прокрутки, чтобы отразить новые сведения. Если bRedraw есть TRUE, полоса прокрутки перезабрана. Если это FALSEтак, он не перезабирается. Полоса прокрутки перезабирается по умолчанию.

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

В случае успешного выполнения возвращается TRUE. В противном случае возвращается FALSE.

Замечания

Необходимо указать значения, необходимые SCROLLINFO для параметров структуры, включая значения флага.

Структура SCROLLINFO содержит сведения о полосе прокрутки, включая минимальное и максимальное положение прокрутки, размер страницы и положение поля прокрутки (большой палец). SCROLLINFO Дополнительные сведения об изменении структуры по умолчанию см. в разделе структуры пакета SDK для Windows.

Пример

// Set SCROLLINFO for the scroll bar. m_ScrollBarHorz is of type
// CScrollBar class, and it is a member variable in CMyDialog class.
SCROLLINFO info;
info.cbSize = sizeof(SCROLLINFO);
info.fMask = SIF_ALL;
info.nMin = 0;
info.nMax = 10;
info.nPage = 2;
info.nPos = 5;
info.nTrackPos = 2;
m_ScrollBarHorz.SetScrollInfo(&info);

CScrollBar::SetScrollPos

Задает текущее положение поля прокрутки, указанное в указанном и если указано nPos , перерисовывает полосу прокрутки, чтобы отразить новую позицию.

int SetScrollPos(
    int nPos,
    BOOL bRedraw = TRUE);

Параметры

nPos
Задает новую позицию для поля прокрутки. Он должен находиться в диапазоне прокрутки.

bRedraw
Указывает, следует ли перезапись полосы прокрутки, чтобы отразить новую позицию. Если bRedraw есть TRUE, полоса прокрутки перезабрана. Если это FALSEтак, он не перезабирается. Полоса прокрутки перезабирается по умолчанию.

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

Указывает предыдущую позицию поля прокрутки в случае успешного выполнения; в противном случае — 0.

Замечания

Задайте значение bRedraw FALSE , когда полоса прокрутки будет перезабираться последующим вызовом другой функции, чтобы избежать повторного вывода полосы прокрутки в течение короткого интервала.

Пример

См. пример для CScrollBar::SetScrollRange.

CScrollBar::SetScrollRange

Задает для указанной полосы прокрутки положения минимума и максимума.

void SetScrollRange(
    int nMinPos,
    int nMaxPos,
    BOOL bRedraw = TRUE);

Параметры

nMinPos
Указывает минимальную позицию прокрутки.

nMaxPos
Задает максимальное положение прокрутки.

bRedraw
Указывает, следует ли перезапись полосы прокрутки, чтобы отразить изменение. Если bRedraw значение TRUEравно, полоса прокрутки перезабрана; если FALSEона не будет перезабрана. Он перезабирается по умолчанию.

Замечания

Установите и nMaxPos установите nMinPos значение 0, чтобы скрыть стандартные полосы прокрутки.

Не вызывайте эту функцию, чтобы скрыть полосу прокрутки при обработке сообщения уведомления на полосе прокрутки.

Если вызов SetScrollRange немедленно следует вызову SetScrollPos функции-члена, установите bRedraw значение SetScrollPos 0, чтобы предотвратить повторное удаление полосы прокрутки.

Разница между значениями nMinPos , указанными и nMaxPos не должна превышать 32 767. Диапазон по умолчанию для элемента управления полосой прокрутки пуст (оба nMinPos и nMaxPos 0).

Пример

// Sets minimum (0) and maximum (10) position values for the
// CScrollBar control. m_ScrollBarVert is of type CScrollBar class,
// and it is a member variable in CMyDialog class.
m_ScrollBarVert.SetScrollRange(0, 10);

// Set the position of the scroll box.
m_ScrollBarVert.SetScrollPos(5);

// Disable the down arrow of the scroll bar. By default, both arrows
// are enabled.
m_ScrollBarVert.EnableScrollBar(ESB_DISABLE_DOWN);

CScrollBar::ShowScrollBar

Отображает или скрывает полосу прокрутки.

void ShowScrollBar(BOOL bShow = TRUE);

Параметры

bShow
Указывает, отображается ли полоса прокрутки или скрыта. Если этот параметр имеет значение TRUE, отображается полоса прокрутки; в противном случае она скрыта.

Замечания

Приложение не должно вызывать эту функцию, чтобы скрыть полосу прокрутки при обработке сообщения уведомления полосы прокрутки.

Пример

Пример см. в примере CScrollBar::Create.

См. также

CWnd Класс
Диаграмма иерархии
CButton Класс
CComboBox Класс
CEdit Класс
CListBox Класс
CStatic Класс
CDialog Класс