Функция ModifyMenu

Declare Function ModifyMenu Lib "user32"  Alias "ModifyMenuA"  (ByVal hMenu As Long, _
    ByVal nPosition As Long, _
    ByVal wFlags As Long, _
    ByVal wIDNewItem As Long, _
    ByVal lpString As Any) As Long

ModifyMenu меняет существующий пункт меню. Существует схожая функция SetMenuItemInfo с более широкими возможностями
hMenu
Дескриптор меню
nPosition
Изменяемый пункт меню
wFlags
Комбинация флагов
MF_BITMAP = &H4&Пункт меню является растровым изображением
MF_BYCOMMAND = &H0&Пункт меню задается своим идентификатором
MF_BYPOSITION = &H400&Пункт меню задается позицией от начала меню (отсчет от 0)
MF_CHECKED = &H8&Устанавливает галочку
MF_DISABLED = &H2&Блокирует заданный пункт
MF_ENABLEDРазблокирует заданный пункт
MF_GRAYED = &H1&Затемняет пункт
MF_MENUBARBREAKСоздает новый столбец, отделяемый вертикальной чертой, в всплывающем меню
MF_MENUBREAKСоздает новый столбец
MF_OWNERDRAWПрорисовка пункта самой программой
MF_POPUPЗадает пункт меню, который будет использоваться как субменю или всплывающее меню
MF_SEPARATORРазделительная черта
MF_STRINGТекстовая строка
MF_UNCHECKEDУбирает галочку
wIDNewItem
Идентификатор нового пункта меню. Если параметр wFlags имеет флаг MF_POPUP, то дескриптор всплывающего меню или подменю
lpString
В зависимости от флагов параметра wFlags, может содержать текст пункта меню, дескриптор растра, а также данные для структур

Пример

' Меняем пункт Закрыть в системном меню
' на строку Уничтожить
Dim hwndParent As Long
Dim hMenu As Long
Dim hItem As Long

hwndParent = Me.hWnd
hMenu = GetSystemMenu(hWnd, 0)
hItem = GetMenuItemID(hMenu, 6)

ModifyMenu hMenu, _
        hItem, _
        MF_BYCOMMAND Or MF_GRAYED, _
        -9, _
        "&Уничтожить"

Смотри также

AppendMenu, SetMenuItemInfo

Категория

Меню