Функция AppendMenu добавляет в конец заданной строки меню, "выпадающего" меню, подменю или контекстного меню новый пункт. Вы можете использовать эту функцию, чтобы определить содержание, внешний вид и поведение пункта меню.
Синтаксис
BOOL AppendMenu( HMENU hMenu, UINT uFlags, UINT_PTR uIDNewItem, LPCTSTR lpNewItem ); |
Параметры
hMenu
[in] Дескриптор строки меню, "выпадающего" меню, подменю или контекстное меню, которое будет изменено.uFlags
[in] Определяет флажки, которые управляют внешним видом и поведением нового пункта меню. Этот параметр может быть комбинацией значений, перечисленных в разделе Замечаний ниже.uIDNewItem
[in] Определяет или идентификатор нового пункта меню или, если параметр uFlags установлен в MF_POPUP, дескриптор "выпадающего" меню или подменю.lpNewItem
[in] Определяет содержание нового пункта меню. Интерпретация параметра lpNewItem зависит от того, включает ли в себя параметр uFlags флажок MF_BITMAP, MF_OWNERDRAW или MF_STRING, как указано ниже:Значение | Предназначение |
|
Содержит дескриптор точечного рисунка. |
|
Содержит предоставляемое прикладной программой значение, которое может быть использовано для сохранения дополнительных данных, касающихся пункта меню. Это значение является членом itemData структуры, указываемой параметром lParam при отправке сообщения WM_MEASUREITEM или WM_DRAWITEM, когда создается меню, или модифицируется его внешний вид. |
|
Содержит указатель на строку с символом нуля в конце. |
Возвращаемые значения
Если функция завершается успешно, величина возвращаемого значения - не нуль.
Если функция завершилась ошибкой, величина возвращаемого значения - нуль. Чтобы получить дополнительные данные об ошибке, вызовите функцию GetLastError.
Замечания
Прикладная программа должна вызывать функцию DrawMenuBar всякий раз, когда изменяется меню, независимо от того, находится оно или нет в отображаемом окне.
Чтобы получить клавиатурные ускорители для работы с растровыми или нарисованными пользователем (собственными) пунктами меню, владелец меню должен обработать сообщение WM_MENUCHAR. За подробной информацией обратитесь к статье Собственные меню и сообщение WM_MENUCHAR.
Следующие флажки могут быть установлены в параметре uFlags:
Значение Предназначение MF_BITMAP Использовать точечный рисунок как пункт меню. Параметр lpNewItem содержит дескриптор точечного рисунка. 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), этот флажок показывает на экране значок рядом с пунктом меню очищенный, от метки "галочки".
Следующие группы флажков не могут использоваться вместе:
- MF_BITMAP, MF_STRING и MF_OWNERDRAW
- MF_CHECKED и MF_UNCHECKED
- MF_DISABLED, MF_ENABLED и MF_GRAYED
- MF_MENUBARBREAK и MF_MENUBREAK
Windows 95/98/Me: AppendMenuW поддерживается программой Microsoft Layer for Unicode. Чтобы использовать ее, Вы должны добавить некоторые файлы к вашему приложению, как изложено в описании Microsoft Layer for Unicode для системы Windows 95/98/Me.
Пример
Пример смотри в статье Добавление меню Линии и Диаграммы.
Смотри также
Краткий обзор Меню, CreateMenu, DeleteMenu, DestroyMenu, DrawMenuBar, InsertMenu, InsertMenuItem, ModifyMenu, RemoveMenu, SetMenuItemBitmaps
Размещение и совместимость AppendMenu |
|
Windows. NET Server |
Да |
Windows XP |
Да |
Windows 2000 |
Да |
Windows NT |
Да версии 3.1 и выше |
Windows Me |
Да |
Windows 98 |
Да |
Windows 95 |
Да |
Используемая библиотека |
User32.lib |
Заголовочный файл |
|
- объявлено в |
Winuser.h |
- включено в |
Windows.h |
Unicode |
Нет |
Замечания по платформе |
Не имеется |