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


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

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

Синтаксис

BOOL GetScrollInfo(
  [in]      HWND         hwnd,
  [in]      int          nBar,
  [in, out] LPSCROLLINFO lpsi
);

Параметры

[in] hwnd

Тип: HWND

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

[in] nBar

Тип: int

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

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

[in, out] lpsi

Тип: LPSCROLLINFO

Указатель на структуру SCROLLINFO . Перед вызовом GetScrollInfo задайте для элемента cbSizeзначение sizeof(SCROLLINFO), а для элемента fMask укажите параметры полосы прокрутки для извлечения. Перед возвратом функция копирует указанные параметры в соответствующие элементы структуры.

Элемент fMask может быть одним или несколькими из следующих значений.

Значение Значение
SIF_PAGE
Копирует страницу прокрутки в элемент nPage структуры SCROLLINFO , на которую указывает lpsi.
SIF_POS
Копирует позицию прокрутки в элемент nPos структуры SCROLLINFO , на которую указывает lpsi.
SIF_RANGE
Копирует диапазон прокрутки в элементы nMin и nMax структуры SCROLLINFO , на которые указывает lpsi.
SIF_TRACKPOS
Копирует текущую позицию отслеживания поля прокрутки в элемент nTrackPos структуры SCROLLINFO , на которую указывает lpsi.

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

Тип: BOOL

Если функция извлекла какие-либо значения, возвращается ненулевое значение.

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

Комментарии

Функция GetScrollInfo позволяет приложениям использовать 32-разрядные позиции прокрутки. Хотя сообщения, указывающие положение полосы прокрутки, WM_HSCROLL и WM_VSCROLL, предоставляют только 16 бит данных о положении, функции SetScrollInfo и GetScrollInfo предоставляют 32 бита данных о положении полосы прокрутки. Таким образом, приложение может вызывать GetScrollInfo при обработке сообщений WM_HSCROLL или WM_VSCROLL для получения 32-разрядных данных о положении полосы прокрутки.

Чтобы получить 32-разрядную позицию поля прокрутки (большого пальца) во время SB_THUMBTRACK кода запроса в WM_HSCROLL или WM_VSCROLL сообщении, вызовите Метод GetScrollInfo со значением SIF_TRACKPOS в элементе fMask структуры SCROLLINFO . Функция возвращает позицию отслеживания для поля прокрутки в элементе nTrackPos структуры SCROLLINFO . Это позволяет получить положение поля прокрутки по мере его перемещения пользователем. Следующий пример кода иллюстрирует этот метод.

SCROLLINFO si;
case WM_HSCROLL:
    switch(LOWORD(wparam)) {
        case SB_THUMBTRACK:
          // Initialize SCROLLINFO structure
 
            ZeroMemory(&si, sizeof(si));
            si.cbSize = sizeof(si);
            si.fMask = SIF_TRACKPOS;
 
          // Call GetScrollInfo to get current tracking 
          //    position in si.nTrackPos
 
            if (!GetScrollInfo(hwnd, SB_HORZ, &si) )
                return 1; // GetScrollInfo failed
            break;
        .
        .
        .
    }

Если параметр fnBar SB_CTL, а окно, указанное параметром hwnd , не является системным элементом управления полосой прокрутки, система отправляет SBM_GETSCROLLINFO сообщение в окно для получения сведений о полосе прокрутки. Это позволяет GetScrollInfo работать с пользовательским элементом управления, который имитирует полосу прокрутки. Если окно не обрабатывает сообщение SBM_GETSCROLLINFO , функция GetScrollInfo завершается ошибкой.

Требования

Требование Значение
Минимальная версия клиента 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)

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

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

SCROLLINFO

SetScrollInfo

WM_HSCROLL

WM_VSCROLL