Структура MENUITEMINFO

Type MENUITEMINFO
   cbSize As Long
   fMask As Long
   fType As Long
   fState As Long
   wID As Long
   hSubMenu As Long
   hbmpChecked As Long
   hbmpUnchecked As Long
   dwItemData As Long
   dwTypeData As String
   cch As Long
End Type

Структура MENUITEMINFO содержит информацию, описывающую пункт меню. Если вы используете dwTypeData как дескриптор растра, то замените тип переменной dwTypeData с "As String"на тип "As Long"

Состав структуры

cbSize
Размер структуры в байтах
fMask
Комбинация флагов, определяющих определенную часть структуры. Остальные поля игнорируются
MIIM_STATE = &H1Используется fState
MIIM_ID = &H2Используется wID
MIIM_SUBMENU = &H4Используется hSubMenu
MIIM_CHECKMARKS = &H8Используется hbmpChecked и hbmpUnchecked
MIIM_DATA = &H20Используется dwItemData
MIIM_TYPE = &H10Используется dwTypeData и cch
fType
Комбинация флагов, определяющая тип команды меню:
MFT_BITMAP = &H4Пункт меню выводится в виде растрового изображения . dwTypeData содержит дескриптор растра. cch игнорируется. Нельзя комбинировать с MFT_SEPARATOR или MFT_STRING
MFT_MENUBARBREAK = &H20Пункт меню размещается на новой строке в меню верхнего уровня или в новом столбце всплывающего меню. Столбцы разделяются вертикальной чертой
MFT_MENUBREAK = &H40Аналогично MFT_MENUBARBREAK, но без вертикальной черты
MFT_OWNERDRAW = &H100Прорисовка меню выполняется приложением
MFT_RADIOCHECK = &H200Состояние пометки обозначается кружком вместо галочки
MFT_RIGHTJUSTIFY = &H4000Выравнивание по правому краю
MFT_RIGHTORDER = &H2000Windows 95/98/2000: Каскад меню справа налево (если поддерживается системой)
MFT_SEPARATOR = &H800Разделитель меню. dwTypeDataи cch игнорируются. Нельзя комбинировать с MFT_BITMAP или MFT_STRING
MFT_STRING = &H0Строка, определяющая пункт меню. dwTypeData является строкой пункта меню, а cch - длина этой строки. Нельзя комбинировать с MFT_BITMAP или MFT_SEPARATOR
fState
Комбинация флагов, определяющая текущее состояние пункта меню:
MFS_CHECKED = &H8Галочка в пункте меню
MFS_DEFAULT = &H1000По умолчанию. Выделен жирным шрифтом
MFS_DISABLED = &H2Пункт меню недоступен
MFS_ENABLED = &H0Пункт меню доступен
MFS_GRAYED = &H1Пункт затенен и недоступен
MFS_HILITE = &H80Пункт меню выделен
MFS_UNCHECKED = &H0Пункт меню не помечен
MFS_UNHILITE = &H0Пункт меню не выделен
wID
Уникальный 16-битный идентификатор пункта меню
hSubMenu
Дескриптор подменю, связанного с пунктом меню
hbmpChecked
Дескриптор растра, выводимого рядом с помеченной командой меню. Ноль , чтобы использовать растр по умолчанию
hbmpUnchecked
Дескриптор растра, выводимого рядом с непомеченной командой меню. Ноль , чтобы использовать растр по умолчанию
dwItemData
Информация, определяемая программой. Не используется Windows
dwTypeData
Если fType содержит MFT_STRING, то эта строка определят пункт меню. Если fType содержит MFT_BITMAP, то является дескриптором раста
cch
Если dwTypeData является строкой, то является длиной данной строки

Используется в

GetMenuItemInfo, InsertMenuItem, SetMenuItemInfo