Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.07.01;
Скачать: CL | DM;

Вниз

Перерисовка пунктов меню на WinAPI   Найти похожие ветки 

 
Dmitry_177   (2007-01-20 14:51) [0]

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


 
Dmitry_177   (2007-01-20 16:00) [1]

Т.е. так не получается...

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


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


 
Dmitry_177   (2007-01-20 17:44) [2]

Понял свою маленькую ошибочку.. Сделал так:

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


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


 
Dmitry_177   (2007-01-20 19:45) [3]

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


 
Eraser ©   (2007-01-21 01:35) [4]

itemAction
Specifies the drawing action required. This member can be one or more of the values.
ODA_DRAWENTIRE
The entire control needs to be drawn.
ODA_FOCUS
The control has lost or gained the keyboard focus. The itemState member should be checked to determine whether the control has the focus.
ODA_SELECT
The selection status has changed. The itemState member should be checked to determine the new selection state.
itemState
Specifies the visual state of the item after the current drawing action takes place. This member can be a combination of the values shown in the following table.
ODS_CHECKED
The menu item is to be checked. This bit is used only in a menu.
ODS_COMBOBOXEDIT
The drawing takes place in the selection field (edit control) of an owner-drawn combo box.
ODS_DEFAULT
The item is the default item.
ODS_DISABLED
The item is to be drawn as disabled.
ODS_FOCUS
The item has the keyboard focus.
ODS_GRAYED
The item is to be grayed. This bit is used only in a menu.
ODS_HOTLIGHT
Windows 98/Me, Windows 2000/XP: The item is being hot-tracked, that is, the item will be highlighted when the mouse is on the item.
ODS_INACTIVE
Windows 98/Me, Windows 2000/XP: The item is inactive and the window associated with the menu is inactive.
ODS_NOACCEL
Windows 2000/XP: The control is drawn without the keyboard accelerator cues.
ODS_NOFOCUSRECT
Windows 2000/XP: The control is drawn without focus indicator cues.
ODS_SELECTED
The menu item"s status is selected.



Страницы: 1 вся ветка

Текущий архив: 2007.07.01;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.023 c
1-1178277873
I-New
2007-05-04 15:24
2007.07.01
32битная иконка на кнопке


2-1181295060
webpauk
2007-06-08 13:31
2007.07.01
array of Timage


6-1165378908
Signate
2006-12-06 07:21
2007.07.01
Сокеты. Дождаться завершения send?


1-1178093554
IGray
2007-05-02 12:12
2007.07.01
Работа с настройками проложения - что нужно учесть?


15-1180961245

2007-06-04 16:47
2007.07.01
function