Информация об изменениях

Сообщение Re[3]: BS_OWNERDRAW и DrawState от 29.06.2017 16:34

Изменено 29.06.2017 16:43 Alexander G

Re[3]: BS_OWNERDRAW и DrawState
Здравствуйте, Vaynamond, Вы писали:

V>Нет, я просто хочу вывести картинку на кнопке (совместно с текстом). Под кнопкой никаких контролов нет — только диалог.

V>Но, поскольку картинка обычная BMP, DrawState выводит ее всю.

А, то есть надо дать кнопке нарисоваться штатно, затем нарисовать свой битмап сверху?

Убрать BS_OWNERDRAW,
обрабатывать NM_CUSTOMDRAW: при CDDS_PREPAINT возвращать CDRF_NOTIFYPOSTPAINT, при CDDS_POSTPAINT — рисовать свой битмап.
Re[3]: BS_OWNERDRAW и DrawState
Здравствуйте, Vaynamond, Вы писали:

V>Нет, я просто хочу вывести картинку на кнопке (совместно с текстом). Под кнопкой никаких контролов нет — только диалог.

V>Но, поскольку картинка обычная BMP, DrawState выводит ее всю.

А, то есть надо дать кнопке нарисоваться штатно, затем нарисовать свой битмап сверху?

Убрать BS_OWNERDRAW,
обрабатывать NM_CUSTOMDRAW: при CDDS_PREPAINT возвращать CDRF_NOTIFYPOSTPAINT, при CDDS_POSTPAINT — рисовать свой битмап.


(да, NM_CUSTOMDRAW для кнопки требует Common Controls 6.0, которые через манифест включаются.
А если они не используются, то таки остаться на BS_OWNERDRAW, и перед своим битмапом рисовать кнопку через DrawFrameControl, этого должно быть достаточно, ибо без Common Controls 6.0 визуальных стилей нет)