Функция ModifyMenu


Функция 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, DrawMenuBarEnableMenuItem 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

Нет

Замечания по платформе

Не имеется

 

Назад в оглавление
На главную страницу
На оглавление справки

Hosted by uCoz