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