Функция ScrollWindowEx (winuser.h)
Функция ScrollWindowEx прокручивает содержимое клиентской области указанного окна.
Синтаксис
int ScrollWindowEx(
[in] HWND hWnd,
[in] int dx,
[in] int dy,
[in] const RECT *prcScroll,
[in] const RECT *prcClip,
[in] HRGN hrgnUpdate,
[out] LPRECT prcUpdate,
[in] UINT flags
);
Параметры
[in] hWnd
Тип: HWND
Выполните обработку до окна, в котором должна прокручиваться клиентская область.
[in] dx
Тип: int
Указывает объем горизонтальной прокрутки (в единицах устройства). Этот параметр должен быть отрицательным значением для прокрутки влево.
[in] dy
Тип: int
Указывает объем вертикальной прокрутки (в единицах устройства). Этот параметр должен быть отрицательным значением для прокрутки вверх.
[in] prcScroll
Тип: const RECT*
Указатель на структуру RECT , задающую прокручиваемую часть клиентской области. Если этот параметр имеет значение NULL, прокручивается вся клиентская область.
[in] prcClip
Тип: const RECT*
Указатель на структуру RECT , содержащую координаты прямоугольника обрезки. Затрагиваются только биты устройства в прямоугольнике обрезки. Биты, прокрученные от внешней стороны прямоугольника к внутренней части, окрашены; Биты, прокрученные из внутренней части прямоугольника на снаружи, не окрашены. Этот параметр может иметь значение NULL.
[in] hrgnUpdate
Тип: HRGN
Дескриптор области, которая была изменена для удержания области, которая была признана недействительной при прокрутке. Этот параметр может иметь значение NULL.
[out] prcUpdate
Тип: LPRECT
Указатель на структуру RECT , получающую границы прямоугольника, который был признан недействительным при прокрутке. Этот параметр может иметь значение NULL.
[in] flags
Тип: UINT
Указывает флаги, управляющие прокруткой. Этот параметр может быть сочетанием следующих значений.
Значение | Значение |
---|---|
|
Удаляет только что недействимую область, отправляя WM_ERASEBKGND сообщение в окно при указании флага SW_INVALIDATE. |
|
Делает недействительной область, определяемую параметром hrgnUpdate после прокрутки. |
|
Прокручивает все дочерние окна, пересекающиеся с прямоугольником, на который указывает параметр prcScroll . Дочерние окна прокручиваются по количеству пикселей, заданному параметрами dx и dy . Система отправляет сообщение WM_MOVE всем дочерним окнам, пересекающим прямоугольник prcScroll , даже если они не перемещаются. |
|
Прокрутка с использованием плавной прокрутки. Используйте часть HIWORD параметра flags , чтобы указать, сколько времени (в миллисекундах) должна занять операция плавной прокрутки. |
Возвращаемое значение
Тип: int
Если функция выполнена успешно, возвращается значение SIMPLEREGION (прямоугольная недопустимая область), COMPLEXREGION (нерекомендоцированная область; перекрывающиеся прямоугольники) или NULLREGION (недействительная область недействительна).
Если функция завершается сбоем, возвращается значение ERROR. Дополнительные сведения об ошибке можно получить, вызвав GetLastError.
Комментарии
Если флаги SW_INVALIDATE и SW_ERASE не указаны, ScrollWindowEx не делает недействительной область, из которую выполняется прокрутка. Если установлен любой из этих флагов, ScrollWindowEx делает эту область недействительной. Область не обновляется, пока приложение не вызовет функцию UpdateWindow , не вызовет функцию RedrawWindow (указав флаг RDW_UPDATENOW или RDW_ERASENOW) или не извлекает сообщение WM_PAINT из очереди приложения.
Если окно имеет стиль WS_CLIPCHILDREN , возвращаемые области, заданные hrgnUpdate и prcUpdate , представляют общую площадь прокручиваемого окна, которое необходимо обновить, включая все области дочерних окон, которые необходимо обновить.
Если указан флаг SW_SCROLLCHILDREN, система неправильно обновляет экран при прокрутке части дочернего окна. Часть прокручиваемого дочернего окна, расположенная за пределами исходного прямоугольника, не удаляется и неправильно перерисована в новом назначении. Чтобы переместить дочерние окна, которые не полностью находятся в прямоугольнике, заданном prcScroll, используйте функцию DeferWindowPos . Курсор перемещается, если установлен флаг SW_SCROLLCHILDREN, а прямоугольник с курсором пересекается с прямоугольником прокрутки.
Все входные и выходные координаты (для prcScroll, prclip, prcUpdate и hrgnUpdate) определяются как клиентские координаты, независимо от того, имеет ли окно стиль CS_OWNDC или CS_CLASSDC класса. При необходимости используйте функции LPtoDP и DPtoLP для преобразования в логические координаты и из нее.
Примеры
Пример см. в разделе Прокрутка текста с помощью сообщения WM_PAINT.
Требования
Минимальная версия клиента | 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) |
См. также раздел
Другие ресурсы