Как рисовать в неклиентской области компонента, поверх скроллбара?
|
|
Среда, 28 Октября 2020 г. 16:26
+ в цитатник
Rouse_: Вот, для демонстрации я выбрал из исходников Windows все требуемые модули, чтобы показать как все устроено.
Начинается все с модуля dwp.c - он содержит в себе DefWindowProc для всех окон.
нас интересует xxxDefWindowProc() в части WM_NCPAINT, где мы видим вызов xxxDrawWindowFrame()
Теперь переходим в модуль drawfrm.c
В процедуре xxxDrawWindowFrame() видим отрисовку бордюров окна, при необходимости заголовка формы и сайзбокса, а в самом конце вызовы xxxDrawScrollBar по одному на вертикальный и горизонтальный.
Замечу - все это происходит на момент обработки WM_NCPAINT
Ну и в заключение переходим в модуль sbctl.c где реализована сама работа со скролом, причем в режиме как самостоятельного контрола, так и части фрейма окна (о чем наглядно говорят коментарии, да и по коду видно).
Т.е. по сути скролбокс при выставленных стилях WS_HSCROLL/WS_VSCROLL это не более чем красивая картинка размещенная на NC области окна.
DrawScrollBars.zip (, : 1)
https://forum.sources.ru/index.php?showtopic=420174&view=findpost&p=3841163
Метки:
Delphi:
Общие вопросы
-
Запись понравилась
-
0
Процитировали
-
0
Сохранили
-