Функция SetMenuItemInfo

Declare Function SetMenuItemInfo Lib "user32" Alias "SetMenuItemInfoA" (ByVal hMenu As Long, ByVal uItem As Long, ByVal fByPosition As Long, lpmii As MENUITEMINFO) As Long
SetMenuItemInfo меняет различные атрибуты пунктов меню
hMenu
Дескриптор меню, содержащий интересующий пункт
uItem
Идентификатор пункта меню для получения информации или его позиция в меню, в зависимости от параметра fByPosition
fByPosition
Если параметр имеет ненулевое значение, то uItem показывает пункт, используя его позицию (отсчет от 0). Если равен 0, то uItem является уникальным идентификаторм пункта меню
lpmii
Структура MENUITEMINFO, описывающая требуемые изменения для пункта меню

Пример

' Поменяем галочку у пункта меню на точку
' Создайте на форме меню с подменю mnuPunkt,
' в котороме вместо галочки будет выводиться точка
Dim hMenu As Long, hSubMenu As Long, MII As MENUITEMINFO
' Получим дескриптор меню формы
hMenu = GetMenu(Me.hwnd)
' Получим дескриптор первого подменю
hSubMenu = GetSubMenu(hMenu, 0)
' Инициализируем структуру
MII.cbSize = Len(MII)
MII.fMask = MIIM_SUBMENU
' Получим информацию о пункте меню
GetMenuItemInfo hSubMenu, 0, True, MII
    
' Выводим точку (стиль радиокнопки) вместо галочки
MII.fMask = MIIM_TYPE
MII.fType = MFT_RADIOCHECK
MII.dwTypeData = mnuPunkt.Caption
SetMenuItemInfo hSubMenu, 0, True, MII
mnuPunkt.Checked = Not (mnuPunkt.Checked)

Смотри также

GetMenuItemInfo

Категория

Меню