Класс 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
см. в разделе "Элементы управления".
Иерархия наследования
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_TRACKPOS
SIF_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
Класс