Страница: 1 |
Страница: 1 |
Вопрос: CustomDraw для OptionButton
Добавлено: 26.02.05 20:00
Автор вопроса: Comanche
Имеется OptionButton с Style = Graphical; т.е. в виде прямоугольной кнопки. При получении фокуса эта кнопка "портится" - фокусная рамка у неё, прямо скажем, какая-то безобразная: не пунктиром, а сплошняком.
Думал, что смогу запросто избавиться от этой дурацкой рамки при помощи custom draw, как например делал для ListView (при WM_NOTIFY --> NM_CUSTOMDRAW --> CDDS_ITEMPREPAINT):
Ан-нет! Ничего аналогичного тут, похоже, не сделаешь: бэйсиковский OptionButton - это "производная" от "Button control", а согласно МСДН, обычные кнопки не посылают родительскому окну сообщения NM_CUSTOMDRAW :((
В лом делать свой контрол по такому пустяковому поводу. М.б. можно как-то извернуться и задавить эту мерзкую рамку?
Ответы
Всего ответов: 2
Номер ответа: 1
Автор ответа:
sne
Разработчик Offline Client
ICQ: 233286456
Вопросов: 34
Ответов: 5445
Web-сайт:
Профиль | | #1
Добавлено: 26.02.05 21:03
Э... а может сабклассить не родительскиое окошко а сам контрол ?
Номер ответа: 2
Автор ответа:
Comanche
Вопросов: 87
Ответов: 459
Профиль | | #2
Добавлено: 26.02.05 21:17
Чё-то не пойму... слазил в МСДН на ссылку:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/commctls/buttons/buttonreference/buttonstyles.asp?frame=true
Там следующее (фрагменты):
.......
.......
BS_OWNERDRAW
Creates an owner-drawn button. The owner window receives a WM_DRAWITEM message when a visual aspect of the button has changed. Do not combine the BS_OWNERDRAW style with any other button styles.
.......
.......
Похоже, с обычным VB-шным OptionButton этот номер не пройдёт... или как?
Вместе с тем есть ещё вот что:
The BN_PAINT notification code is sent when a button should be painted.
Note: This notification message is provided only for compatibility with 16-bit versions of Microsoft Windows earlier than version 3.0. Applications should use the BS_OWNERDRAW button style and the DRAWITEMSTRUCT structure for this task.
The parent window of the button receives the BN_PAINT notification code through the WM_COMMAND message.
Но BN_PAINT - вероятно геморройное решение...
PS: а чтобы использовать NM_CUSTOMDRAW для обычных кнопок, нужно следующее:
Вот засада...