Функция GetScrollInfo (winuser.h)
Функция GetScrollInfo извлекает параметры полосы прокрутки, включая минимальную и максимальную позиции прокрутки, размер страницы и положение поля прокрутки (большого пальца).
Синтаксис
BOOL GetScrollInfo(
[in] HWND hwnd,
[in] int nBar,
[in, out] LPSCROLLINFO lpsi
);
Параметры
[in] hwnd
Тип: HWND
Обработка элемента управления полосой прокрутки или окна со стандартной полосой прокрутки в зависимости от значения параметра fnBar .
[in] nBar
Тип: int
Указывает тип полосы прокрутки, для которой требуется извлечь параметры. Этот параметр может принимать одно из указанных ниже значений.
[in, out] lpsi
Тип: LPSCROLLINFO
Указатель на структуру SCROLLINFO . Перед вызовом GetScrollInfo задайте для элемента cbSizeзначение sizeof(SCROLLINFO), а для элемента fMask укажите параметры полосы прокрутки для извлечения. Перед возвратом функция копирует указанные параметры в соответствующие элементы структуры.
Элемент fMask может быть одним или несколькими из следующих значений.
Значение | Значение |
---|---|
|
Копирует страницу прокрутки в элемент nPage структуры SCROLLINFO , на которую указывает lpsi. |
|
Копирует позицию прокрутки в элемент nPos структуры SCROLLINFO , на которую указывает lpsi. |
|
Копирует диапазон прокрутки в элементы nMin и nMax структуры SCROLLINFO , на которые указывает lpsi. |
|
Копирует текущую позицию отслеживания поля прокрутки в элемент 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) |
См. также раздел
Справочные материалы