Как я могу проверить, есть ли в окне видимые полосы прокрутки, используя его HWND?

Я хочу проверить, имеет ли окно внешнего приложения вертикальную или горизонтальную полосу прокрутки, видимую с помощью HWND (дескриптор) окна, существует ли какая-либо функция WinApi для получения этой информации? Я действительно пытаюсь GetScrollInfo функция, но, кажется, не получить информацию о видимости полос прокрутки.

1 ответ

Решение

Как насчет GetScrollBarInfo с OBJID_HSCROLL или же OBJID_VSCROLL

Если idObject равен OBJID_CLIENT, а окно, указанное hwnd, не является системным элементом управления полосой прокрутки, система отправляет сообщение SBM_GETSCROLLBARINFO в окно для получения информации о полосе прокрутки. Это позволяет GetScrollBarInfo работать с пользовательским элементом управления, имитирующим полосу прокрутки. Если окно не обрабатывает сообщение SBM_GETSCROLLBARINFO, функция GetScrollBarInfo завершается ошибкой.

Вы можете проверить rgstate в SCROLLBARINFO структура, есть STATE_SYSTEM_INVISIBLE флаг там.


Другой возможный способ - проверить GetWindowLong(hWnd, GWL_STYLE) and (WS_HSCROLL or WS_VSCROLL) <> 0

Другие вопросы по тегам