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


Функция SetScrollPos (winuser.h)

Функция SetScrollPos задает положение поля прокрутки (большого пальца) на указанной полосе прокрутки и при необходимости перерисовывает полосу прокрутки, чтобы отразить новое положение поля прокрутки.

Примечание Функция SetScrollPos предоставляется для обеспечения обратной совместимости. Новые приложения должны использовать функцию SetScrollInfo .
 

Синтаксис

int SetScrollPos(
  [in] HWND hWnd,
  [in] int  nBar,
  [in] int  nPos,
  [in] BOOL bRedraw
);

Параметры

[in] hWnd

Тип: HWND

Обработка элемента управления полосой прокрутки или окна со стандартной полосой прокрутки в зависимости от значения параметра nBar .

[in] nBar

Тип: int

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

Значение Значение
SB_CTL
Задает положение поля прокрутки в элементе управления полосой прокрутки. Параметр hwnd должен быть дескриптором для элемента управления полосой прокрутки.
SB_HORZ
Задает положение поля прокрутки на стандартной горизонтальной полосе прокрутки окна.
SB_VERT
Задает положение поля прокрутки на стандартной вертикальной полосе прокрутки окна.

[in] nPos

Тип: int

Указывает новое положение поля прокрутки. Позиция должна находиться в диапазоне прокрутки. Дополнительные сведения о диапазоне прокрутки см. в разделе Функция SetScrollRange .

[in] bRedraw

Тип: BOOL

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

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

Тип: int

Если функция выполнена успешно, возвращаемое значение — это предыдущая позиция поля прокрутки.

Если функция выполняется неудачно, возвращается нулевое значение. Дополнительные сведения об ошибке можно получить, вызвав GetLastError.

Комментарии

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

Поскольку сообщения, указывающие положение полосы прокрутки, WM_HSCROLL и WM_VSCROLL, ограничены 16 битами данных о положении, приложения, которые используют только эти сообщения для данных о положении, имеют максимальное значение 65 535 для параметра nPos функции SetScrollPos.

Однако поскольку функции SetScrollInfo, SetScrollPos, SetScrollRange, GetScrollInfo, GetScrollPos и GetScrollRange поддерживают 32-разрядные данные о положении полосы прокрутки, существует способ обойти 16-разрядный барьер WM_HSCROLL и WM_VSCROLL сообщений. Описание метода см. в разделе GetScrollInfo .

Если параметр nBar SB_CTL, а окно, указанное параметром hWnd , не является системным элементом управления полосой прокрутки, система отправляет в окно сообщение SBM_SETPOS для задания сведений о полосе прокрутки. Это позволяет SetScrollPos работать с пользовательским элементом управления, который имитирует полосу прокрутки. Если окно не обрабатывает сообщение SBM_SETPOS , функция SetScrollPos завершается ошибкой.

Требования

   
Минимальная версия клиента Windows Vista [только классические приложения]
Минимальная версия сервера Windows Server 2003 [только классические приложения]
Целевая платформа Windows
Header winuser.h (включая Windows.h)
Библиотека User32.lib
DLL User32.dll
Набор API ext-ms-win-ntuser-misc-l1-2-0 (представлено в Windows 8.1)

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

GetScrollInfo

GetScrollPos

GetScrollRange

Справочные материалы

SetScrollInfo

SetScrollRange