-Поиск по дневнику

Поиск сообщений в rss_forum_sources_ru

 -Подписка по e-mail

 

 -Постоянные читатели

 -Статистика

Статистика LiveInternet.ru: показано количество хитов и посетителей
Создан: 29.07.2007
Записей:
Комментариев:
Написано: 80


Как рисовать в неклиентской области компонента, поверх скроллбара?

Среда, 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

Метки:  

 

Добавить комментарий:
Текст комментария: смайлики

Проверка орфографии: (найти ошибки)

Прикрепить картинку:

 Переводить URL в ссылку
 Подписаться на комментарии
 Подписать картинку