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

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

1 Ответ

17 голосов
/ 17 марта 2012

Как насчет 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...