(ВставитьМеню)
Функция InsertMenu вставляет новый пункт меню в меню, перемещая другие элементы вниз меню.
Функция InsertMenu была заменена функцией InsertMenuItem. Вы все еще можете использовать InsertMenu, однако, если Вы не нуждаетесь в какой-либо из расширенных функций InsertMenuItem.
Синтаксис
BOOL InsertMenu(
HMENU hMenu, // дескриптор меню
UINT uPosition, // пункт меню,который предшествует новому пункту меню
UINT uFlags, // флажки пункта меню
UINT uIDNewItem, // идентификатор меню пункта или выскакивающего меню или подменю
LPCTSTR lpNewItem // содержание пункта меню
);
Параметры
hMenu
Идентифицирует меню, которое будет изменено.
uPosition
Определяет пункт меню, перед которым должен быть вставлен новый пункт меню, как обусловлено параметром uFlags.
uFlags
Устанавливает флажки, которые управляют интерпретацией параметра uPosition и содержанием, внешним видом и поведением нового пункта меню. Этот параметр должен быть комбинацией одного из ниже перечисленных значений и, по крайней мере, одного из значений, перечисленных в следующем разделе Замечаний:
- MF_BYCOMMAND - Указывает, что параметр uPosition дает идентификатор пункта меню. Флажок MF_BYCOMMAND является значением по умолчанию, если ни флажок MF_BYCOMMAND, ни флажок MF_BYPOSITION не установлен.
- MF_BYPOSITION - Указывает, что параметр uPosition дает отсчитываемое от нуля взаимное положение нового пункта меню. Если uPosition - 0xFFFFFFFF, новый пункт меню добавлен в конец меню.
uIDNewItem
Определяет или идентификатор нового пункта меню или, если параметр uFlags имеет установленный флажок MF_POPUP, дескриптор "выскакивающего" меню или подменю.
lpNewItem
Определяет содержание нового пункта меню. Интерпретация lpNewItem зависит от того, включает ли параметр uFlags в себя флажок MF_BITMAP, MF_OWNERDRAW или MF_STRING, как ниже указано:
- MF_BITMAP - Содержит дескриптор точечного рисунка.
- MF_OWNERDRAW - Содержит 32-разрядное значение, поставляемое прикладной программой, которое может быть использовано для поддержки дополнительных данных родственного пункта меню. Значение находится в члене itemData структуры, указанной параметром lParam сообщения WM_MEASUREITEM или WM_DRAWITEM отправленного тогда, когда создавался пункт меню или модифицировался его внешний вид.
- MF_STRING - Содержит указатель на строку с символом нуля в конце (значение по умолчанию).
Возвращаемые значения
Если функция завершается успешно, величина возвращаемого значения - не ноль.
Если функция завершается с ошибкой, величина возвращаемого значения - ноль. Чтобы получать расширенные данные об ошибках, вызовите GetLastError.
Замечания
Прикладная программа должна вызывать функцию DrawMenuBar всякий раз, когда меню изменяется, независимо от того, находится оно или нет в отображаемом окне.
Нижеследующий список описывает флажки, которые могут быть установлены в параметре 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_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
Смотри также
AppendMenu, DeleteMenu, DrawMenuBar, InsertMenuItem, ModifyMenu, RemoveMenu, SetMenuItemBitmaps, WM_DRAWITEM, WM_MEASUREITEM
Размещение и совместимость InsertMenu
Windows NT Да
Win95 Да
Win32s Да
Импортируемая библиотека user32.lib
Заголовочный файл winuser.h
Unicode WinNT
Замечания по платформе Не имеется