Функция AppendMenuA (winuser.h)
Добавляет новый элемент в конец указанной строки меню, раскрывающегося меню, подменю или контекстного меню. Эту функцию можно использовать для указания содержимого, внешнего вида и поведения элемента меню.
Синтаксис
BOOL AppendMenuA(
[in] HMENU hMenu,
[in] UINT uFlags,
[in] UINT_PTR uIDNewItem,
[in, optional] LPCSTR lpNewItem
);
Параметры
[in] hMenu
Тип: HMENU
Дескриптор строки меню, раскрывающегося меню, подменю или контекстного меню для изменения.
[in] uFlags
Тип: UINT
Управляет внешним видом и поведением нового пункта меню. Этот параметр может быть сочетанием следующих значений.
Значение | Значение |
---|---|
|
Использует точечный рисунок в качестве пункта меню. Параметр lpNewItem содержит дескриптор растрового изображения. |
|
Помещает проверка метку рядом с пунктом меню. Если приложение предоставляет растровые изображения проверка метки (см. раздел SetMenuItemBitmaps), этот флаг отображает растровое изображение проверка метки рядом с элементом меню. |
|
Отключает пункт меню, чтобы его нельзя было выбрать, но флаг не будет серым. |
|
Включает пункт меню, чтобы его можно было выбрать, и восстанавливает его из серого состояния. |
|
Отключает элемент меню и выделяет его серым цветом, чтобы его нельзя было выбрать. |
|
Работает так же, как и флаг MF_MENUBREAK для строки меню. Для раскрывающегося меню, подменю или контекстного меню новый столбец отделяется от старого столбца вертикальной линией. |
|
Помещает элемент в новую строку (для строки меню) или в новый столбец (для раскрывающегося меню, подменю или контекстного меню) без разделения столбцов. |
|
Указывает, что элемент является элементом, нарисованным владельцем. Перед отображением меню в первый раз окно, которому принадлежит меню, получает WM_MEASUREITEM сообщение для получения ширины и высоты пункта меню. Сообщение WM_DRAWITEM затем отправляется в процедуру окна владельца всякий раз, когда необходимо обновить внешний вид пункта меню. |
|
Указывает, что пункт меню открывает раскрывающееся меню или подменю. Параметр uIDNewItem указывает дескриптор раскрывающегося меню или подменю. Этот флаг используется для добавления имени меню в строку меню или пункта меню, который открывает подменю в раскрывающемся меню, подменю или контекстном меню. |
|
Рисует горизонтальную разделительную линию. Этот флаг используется только в раскрывающемся меню, подменю или контекстном меню. Линия не может быть серой, отключенной или выделенной. Параметры lpNewItem и uIDNewItem игнорируются. |
|
Указывает, что элемент меню является текстовой строкой; Параметр lpNewItem является указателем на строку. |
|
Не помещать проверка метку рядом с элементом (по умолчанию). Если приложение предоставляет проверка растровые изображения (см. раздел SetMenuItemBitmaps), этот флаг отображает чистое растровое изображение рядом с элементом меню. |
[in] uIDNewItem
Тип: UINT_PTR
Идентификатор нового пункта меню или, если параметру uFlags присвоено значение MF_POPUP, дескриптор раскрывающегося меню или подменю.
[in, optional] lpNewItem
Тип: LPCTSTR
Содержимое нового пункта меню. Интерпретация lpNewItem зависит от того, включает ли параметр uFlags следующие значения.
Значение | Значение |
---|---|
|
Содержит дескриптор растрового рисунка. |
|
Содержит предоставленное приложением значение, которое можно использовать для хранения дополнительных данных, связанных с элементом меню. Значение находится в элементе itemData структуры, на которую указывает параметр lParamWM_MEASUREITEM или WM_DRAWITEM сообщения, отправленного при создании меню или обновлении его внешнего вида. |
|
Содержит указатель на строку, завершаемую null. |
Возвращаемое значение
Тип: BOOL
Если функция выполняется успешно, возвращается ненулевое значение. Если функция выполняется неудачно, возвращается нулевое значение. Дополнительные сведения об ошибке можно получить, вызвав GetLastError.
Комментарии
Приложение должно вызывать функцию DrawMenuBar при каждом изменении меню независимо от того, находится ли меню в отображаемом окне.
Чтобы ускорители клавиатуры работали с элементами меню с растровым рисунком или владельцем, владелец меню должен обработать WM_MENUCHAR сообщение. Дополнительные сведения см. в разделах Меню, нарисованные владельцем, и сообщение WM_MENUCHAR.
Следующие группы флагов нельзя использовать вместе:
- MF_BITMAP, MF_STRING и MF_OWNERDRAW
- MF_CHECKED и MF_UNCHECKED
- MF_DISABLED, MF_ENABLED и MF_GRAYED
- MF_MENUBARBREAK и MF_MENUBREAK
Примеры
Пример см. в разделе Добавление линий и графиков в меню.
Примечание
Заголовок winuser.h определяет AppendMenu как псевдоним, который автоматически выбирает версию ANSI или Юникод этой функции на основе определения константы препроцессора ЮНИКОД. Сочетание использования псевдонима, не зависящий от кодировки, с кодом, не зависящим от кодировки, может привести к несоответствиям, которые приводят к ошибкам компиляции или среды выполнения. Дополнительные сведения см. в разделе Соглашения для прототипов функций.
Требования
Минимальная версия клиента | Windows 2000 Professional [только классические приложения] |
Минимальная версия сервера | Windows 2000 Server [только классические приложения] |
Целевая платформа | Windows |
Header | winuser.h (включая Windows.h) |
Библиотека | User32.lib |
DLL | User32.dll |
Набор API | ext-ms-win-ntuser-menu-l1-1-0 (представлено в Windows 8) |
См. также раздел
Основные понятия
Справочные материалы