Сообщение 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 — рисовать свой битмап.
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 визуальных стилей нет)
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 визуальных стилей нет)