В основном разобрался, и научился перерисовывать меню.
Но никак не смог пройти одну точку:
В принципе для того, кто может ответить на проблему, особо объяснять нечего, и по коду поймет:
- Код: Выделить всё
' модифик. элем. меню в MF_OWNERDRAW
Public Sub CreateOwnerDrawMenu(ByVal hMenu As Long, ByVal MenuID As Long, ByVal ItemData As Long)
Dim dwordFlag As Long
Dim mii As MENUITEMINFO
mii.cbSize = Len(mii)
mii.fMask = MIIM_TYPE
GetMenuItemInfo hMenu, MenuID, False, mii
dwordFlag = MF_BYCOMMAND Or MF_OWNERDRAW
If ((mii.fType And MF_SEPARATOR) = MF_SEPARATOR) Then dwordFlag = dwordFlag Or MF_SEPARATOR
If ((GetMenuState(hMenu, MenuID, MF_BYCOMMAND) And MF_CHECKED) = MF_CHECKED) Then dwordFlag = dwordFlag Or MF_CHECKED
If ((GetMenuState(hMenu, MenuID, MF_BYCOMMAND) And MF_DISABLED) = MF_DISABLED) Then dwordFlag = dwordFlag Or MF_GRAYED
Call ModifyMenu(hMenu, MenuID, dwordFlag, MenuID, ItemData)
End Sub
после чего в функции WondowProc происходит перерисовка соответствующих элементов меню. Все работает нормально. Но споткнулся на подменю. Никак не смог заставить перерисовать пункт подменю, сами элементы подменю перерисовывются, но что задать в вышеуказанной процедуре для dwordFlag когда элемент меню MF_POPUP, чтобы перерисовка происходила как элемента меню MF_BYCOMMAND. пробовал оставить для заголовка подменю dwordFlag = MF_BYCOMMAND Or MF_OWNERDRAW, но перерисовку не делает.