Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: CustomDraw для OptionButton Добавлено: 26.02.05 20:00  

Автор вопроса:  Comanche
Имеется OptionButton с Style = Graphical; т.е. в виде прямоугольной кнопки. При получении фокуса эта кнопка "портится" - фокусная рамка у неё, прямо скажем, какая-то безобразная: не пунктиром, а сплошняком.

Думал, что смогу запросто избавиться от этой дурацкой рамки при помощи custom draw, как например делал для ListView (при WM_NOTIFY --> NM_CUSTOMDRAW --> CDDS_ITEMPREPAINT):

NMLVCD.NMCD.uItemState = NMLVCD.NMCD.uItemState And (Not CDIS_FOCUS)


Ан-нет! Ничего аналогичного тут, похоже, не сделаешь: бэйсиковский OptionButton - это "производная" от "Button control", а согласно МСДН, обычные кнопки не посылают родительскому окну сообщения NM_CUSTOMDRAW :((

В лом делать свой контрол по такому пустяковому поводу. М.б. можно как-то извернуться и задавить эту мерзкую рамку?

Ответить

  Ответы Всего ответов: 2  

Номер ответа: 1
Автор ответа:
 sne



Разработчик Offline Client

ICQ: 233286456 

Вопросов: 34
Ответов: 5445
 Web-сайт: hw.t-k.ru
 Профиль | | #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

Там следующее (фрагменты):
If you create a button by specifying the BUTTON class with the CreateWindow or CreateWindowEx function, you can specify a combination of the following button styles.
.......
.......
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 этот номер не пройдёт... или как?

Вместе с тем есть ещё вот что:
BN_PAINT Notification

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 для обычных кнопок, нужно следующее:
Note: To use this API, you must provide a manifest specifying Comclt32.dll version 6.0. For more information on manifests, see Using Windows XP Visual Styles.


Вот засада...

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам