Я пытаюсь получить весь прямоугольник прокручиваемого окна с помощью WIN32 API. Я думал, что GetClientRect
вернет мне то, что мне нужно, но эта функция возвращает только текущий видовой экран. Есть ли специальный вызов функции, который возвращает всю область прокрутки как RECT или я должен позвонить GetScrollRange
, чтобы рассчитать регион самостоятельно?Извлечь весь прямоугольник прокручиваемого окна
ответ
Это не работает. Что касается Windows, прокручиваемое окно не является маленьким видовым окном в большую область, размеры которой вы можете установить или получить, это всего лишь прямоугольник с элементом управления прокруткой на краю. Вы должны определить внешний вид полосы прокрутки, вычислив часть условной области, которая видна в окне просмотра, предоставленном окном, и соответствующим образом нарисовать содержимое окна.
Ах, спасибо за объяснение, теперь это имеет смысл. У меня было ошибочное впечатление, что клиентская область по существу была видовым экраном в более крупный регион, как в вашем примере. –
На самом деле, существует несколько возможностей: из видового экрана на более крупный регион (один большой дочерний элемент управления, который перемещается), видовой экран на большую область (многие дети, все из которых перемещаются), виртуальный видовой экран (дочерние элементы управления создаются/уничтожаются по мере их появления), холст (рисунок происходит в активной области), или полоса прокрутки может быть только элементом управления ползунком, который не прокручивает ничего. –
@Ben - Вы говорите о Win32? Звучит не так. –
Звучит так, как будто это конкретное окно использует виртуальную прокрутку. Даже GetScrollRange
не обязательно укажет вам размеры, потому что нет требования, чтобы дельта 1 на полосе прокрутки равнялась 1 пикселю, на самом деле во многих случаях это одна запись, один ряд и т. Д.
Еще одна вещь, которую нужно попробовать - перечислить все дочерние окна и найти минимальные и максимальные координаты x и y (не забудьте указать ширину и высоту каждого дочернего окна). Конечно, это не поможет, если содержимое напрямую нарисовано, а не иерархия окон.
- 1. прозрачный прямоугольник внутри окна
- 2. Захват прокручиваемого содержимого окна снимок экрана
- 3. xterm dump полного содержимого прокручиваемого окна
- 4. Маскировка прокручиваемого текста в WPF
- 5. Как определить весь прямоугольник в кадре
- 6. Eclipse/SWT: Прямоугольник занимает весь холст
- 7. Обновление QGLWidget (rect) всегда красит весь прямоугольник
- 8. Почему окна позволяют рисовать на весь экран?
- 9. как удалить прямоугольник рамки диалогового окна пользовательского
- 10. Извлечь весь каталог с zipArchive
- 11. Как извлечь весь вход va_list
- 12. wxPython: Создание прокручиваемого DC
- 13. Можно ли извлечь только видимое содержимое прокручиваемого div?
- 14. Заставляет окна перерисовывать весь экран
- 15. Почему прямоугольник отсечения родительского окна совпадает с размером дочернего окна?
- 16. Алгоритм макет прямоугольник окна в 2D дисплей
- 17. Как изменить прямоугольник окна без его перерисовки
- 18. Gtk Expander в прокручиваемом окне: ширина прокручиваемого окна не обновляется
- 19. Как выбрать весь просмотр списка и извлечь весь контент?
- 20. Извлечь весь текст из произвольно вложенного HTML
- 21. Java Как извлечь весь блок XML
- 22. хочет извлечь весь узел XML-файл
- 23. Извлечь весь объект DICOM с сервера
- 24. XSLT - извлечь весь текст, но последний подраздел
- 25. Извлечь весь блог-архив с помощью RSS
- 26. Извлечь весь видимый текст из html
- 27. Как извлечь весь текст с веб-страницы
- 28. Как извлечь весь модуль из родительского модуля?
- 29. отзывчивая высота для прокручиваемого содержимого
- 30. Как выбрать весь прямоугольник вокруг элемента в списке?
Я никогда не испытывал 'GetClientRect', возвращающий ничего, кроме полного прямоугольника клиента, независимо от того, что перекрывает его или полностью ли он на экране. Ты уверен? –