Несколько функций позволяют вам изменять меню после того, как оно было загружено или создано. Эти изменения могут включать в себя добавление или удаление пунктов меню и изменение существующих пунктов меню.
Чтобы добавить пункт меню, используйте функцию InsertMenuItem. Вы можете использовать функцию SetMenuItemInfo, чтобы изменить атрибуты существующего пункта меню. Параметр lpmii указывает на структуру MENUITEMINFO, которая содержит новые атрибуты и определяет, какие атрибуты изменяются. Атрибуты пункта меню включают в себя тип, состояние, идентификатор, подменю, точечные рисунки, данные пункта и текст.
Устаревшие функции AppendMenu и InsertMenu могут быть также использованы, чтобы добавить пункты меню, но новые прикладные программы должны использовать InsertMenuItem. Функция AppendMenu добавляет в конец пункт меню или подменю; функция InsertMenu вставляет пункт меню в заданной позиции в меню или подменю. Обе функции дают возможность атрибутам пункта меню быть определяемыми, включая в себя в любом случае включение, выключение, недоступность, отметку "галочкой или очистку пункта меню.
Чтобы изменить внешний вид или атрибуты существующего пункта меню, используйте функцию ModifyMenu. Например, текстовая строка или точечный рисунок пункта меню могут быть включены, отключены, недоступны, отмечены "галочкой" или очищены. Функция ModifyMenu заменяет определяемый пункт меню на новый пункт.
Чтобы извлечь информацию о пункте меню, используйте функцию GetMenuItemInfo. Параметр lpmii указывает на структуру MENUITEMINFO, которая определяет извлекаемые атрибуты и принимает их текущие значения.
Чтобы удалить пункт меню из меню, используйте функцию DeleteMenu или RemoveMenu. Если удаляемый пункт тот, который открывает подменю, DeleteMenu удаляет связанное подменю, сбрасывая дескриптор меню и, освобождая память, использованную подменю. Функция RemoveMenu удаляет пункт меню, но если пункт открывает подменю, функция не уничтожает подменю или дескриптор, позволяя подменю заново использовать.
Чтобы перерисовывать строку меню, после того как строка меню была изменена, используйте функцию DrawMenuBar. Однако, изменения не появятся до тех пор, пока система не перерисует окно владельца.