(МодифицироватьМеню)
Функция ModifyMenu изменяет существующий пункт меню. Эта функция используется, чтобы определить содержание, внешний вид и поведение пункта меню.
Функция ModifyMenu была заменена функцией SetMenuItemInfo. Вы можете все еще использовать ModifyMenu, однако лишь тогда, если Вы не нуждаетесь в какой-либо из расширенных функций SetMenuItemInfo.
Синтаксис
BOOL ModifyMenu( HMENU hMnu, // дескриптор меню UINT uPosition, // пункт меню, который модифицируется UINT uFlags, // флажки пункта меню PTR uIDNewItem, // идентификатор пункта меню или дескриптор «выскакивающего меню» // или подменю LPCTSTR lpNewItem // содержание пункта меню );
Параметры
hMnu
Дескриптор меню, которое будет изменено.
uPosition
Определяет пункт меню, который будет изменен, как обусловлено параметром uFlags.
uFlags
Определяет флажки, которые управляют интерпретацией параметра uPosition и содержанием, внешним видом и характеристиками пункта меню. Этот параметр должен быть комбинацией одного из следующих обязательных значений и, по крайней мере, одно из значений, перечисленных в следующем разделе Замечаний.
uIDNewItem
Определяет или идентификатор измененного пункта меню или, если параметр uFlags имеет установленный флажок MF_POPUP, дескриптор "выскакивающего" меню или подменю.
lpNewItem
Указывает на содержание измененного пункта меню. Интерпретация этого параметра зависит от того, включает ли параметр uFlags в себя флажок MF_BITMAP, MF_OWNERDRAW или MF_STRING.
Возвращаемые значения
Если функция завершается успешно, величина возвращаемого значения - не ноль.
Если функция завершается с ошибкой, величина возвращаемого значения - ноль. Чтобы получать расширенные данные об ошибках, вызовите GetLastError.
Замечания
Если ModifyMenu заменяет пункт меню, который открывает "выскакивающее" меню или подменю, функция уничтожает старое "выскакивающее" меню или подменю и освобождает память, используемую им.
Для ускорителей клавиатуры, чтобы работать с растровыми или "собственными" (нарисованными пользователем) пунктами меню, владелец меню должен обработать WM_MENUCHAR сообщение. Для получения дополнительной информации см. Нарисованные пользователем ("собственные") меню и Сообщение WM_MENUCHAR.
Прикладная программа должна вызывать функцию DrawMenuBar всякий раз, когда меню изменяется, независимо от того, находится оно или нет в отображаемом окне. Чтобы изменить атрибуты существующих пунктов меню, значительно лучше использовать функции CheckMenuItem и EnableMenuItem.
Нижеследующий список описывает флажки, которые могут быть установлены в параметре uFlags:
Следующие группы флажков не могут быть использованы вместе:
MF_BYCOMMAND и MF_BYPOSITION MF_DISABLED, MF_ENABLED и MF_GRAYED MF_BITMAP, MF_STRING, MF_OWNERDRAW и MF_SEPARATOR MF_MENUBARBREAK и MF_MENUBREAK MF_CHECKED и MF_UNCHECKED
Windows 95/98/Me: ModifyMenuW поддерживается Microsoft Layer для Уникода. Чтобы использовать его, Вы должны добавить некоторые файлы в вашу прикладную программу, как намечено в общих чертах в Microsoft Layer для Уникода для оперативных систем Windows 95/98/Me.
За примером обратитесь к статье Настройки шрифта текстовых строк пункта меню.
Смотри также
AppendMenu, CheckMenuItem, DrawMenuBar, EnableMenuItem, SetMenuItemBitmaps, SetMenuItemInfo, WM_DRAWITEM, WM_MEASUREITEM
Размещение и совместимость ModifyMenu
Windows NT Да Win95 Да Win32s Да Импортируемая библиотека user32.lib Заголовочный файл winuser.h Unicode WinNT Замечания по платформе Не имеется