Как я могу проверить, есть ли в окне видимые полосы прокрутки, используя его 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