Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: WinAPI и системное программирование > Перерисовка пунктов меню на WinAPI


Автор: Dmitry_177 20.1.2007, 16:26
Создаю пункты меню с флагом MFT_OWNERDRAW, чтобы можно было их перерисовывать в WM_DRAWITEM.. 
В структуре DrawItemStruct, т.е.
PDrawItemStruct(lParam)^.itemState = ODS_SELECTED Я рассматриваю это состояние, когда курсор зашел на пункт меню и находится над ним и сам рисую его.. А вот как мне определить что курсор вышел за пределы курсора? Чтобы перерисовать его в начальное состояние.. Т.е. так не получается...

Код

if PDrawItemStruct(lParam)^.itemAction = ODA_SELECT then
 // рисую подсвеченный пункт меню
else
 // рисую пункт меню в обычном состоянии


Я и с itemState пробовал, что-то до меня никак не доходит...((( Подскажите пожалуйста... Вобщем мне нужно вот что: в этой структуре DrawItemStruct определять как перерисовывать пункт меню: 1. наведение курсора на меню, т.е. что можно на него нажать; 2. когда курсор выходит за пределы меню, например на другой пункт меню, перерисовать его в обычное состояние, т.е. не выбранное.. Что-то я совсем запутался с этим... Подскажите плиз.. 

Автор: Dmitry_177 20.1.2007, 17:46
Понял свою маленькую ошибочку.. Сделал так:
Код

if (itemState and ODS_SELECTED) <> 0 then
// рисую подсвеченный пункт меню
else
 // рисую пункт меню в обычном состоянии


Я работаю с главным меню.. При простом наведении курсора на пункт меню(не раскрывшегося, а то которое вверху окна) он у меня не подсвечивается.. smile   Вот если раскрыть меню и перетаскивать курсор на соседние пункты главного меню, то все происходит как надо, а вот без раскрытия что-то никак... smile 

Автор: Dmitry_177 20.1.2007, 19:46
Неужели никто не знает?? Ведь полюбому в системе происходит какое-то событие при наведении курсора на пункт меню, раз уж оно подсвечивается и без собственной отрисовки...

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)