C++ C++ C# C# ASP.NET Security ASP.NET Security ASM ASM Скачать Скачать Поиск Поиск Хостинг Хостинг  
  Программа для работы с LPT портом...
Язык: .NET — ©Alexey...
  "ASP.NET Atlas" – AJAX в исполнении Micro...
Язык: .NET — ©legigor@mail.ru...
  "Невытесняющая" Многопоточность...
Язык: C/C++ — ©...
  01.05.2010 — Update World C++: Сборник GPL QT исходников
  15.12.2007 — Весь сайт целиком можно загрузить по ссылкам из раздела Скачать
Хостинг:
Windows 2003, ASP.NET 2.0
бесплатный и от 80 руб./мес


   Отправить письмо
Кулабухов Артем, Беларусь




 11.19.1.38 - Функция ModifyMenu / Меню. / Win32 API

11.19.1.38 - Функция ModifyMenu

(МодифицироватьМеню)

Функция ModifyMenu изменяет существующий пункт меню. Эта функция используется, чтобы определить содержание, внешний вид и поведение пункта меню.

Функция ModifyMenu была заменена функцией SetMenuItemInfo. Вы можете все еще использовать ModifyMenu, однако лишь тогда, если Вы не нуждаетесь в какой-либо из расширенных функций SetMenuItemInfo.

Синтаксис

BOOL ModifyMenu(
	HMENU hMnu,		// дескриптор меню
	UINT uPosition,		// пункт меню, который модифицируется
	UINT uFlags,		// флажки пункта меню
	PTR uIDNewItem,		// идентификатор пункта меню или дескриптор «выскакивающего меню»
				// или подменю
	LPCTSTR lpNewItem		// содержание пункта меню
);

Параметры
hMnu
Дескриптор меню, которое будет изменено.
uPosition
Определяет пункт меню, который будет изменен, как обусловлено параметром uFlags.
uFlags
Определяет флажки, которые управляют интерпретацией параметра uPosition и содержанием, внешним видом и характеристиками пункта меню. Этот параметр должен быть комбинацией одного из следующих обязательных значений и, по крайней мере, одно из значений, перечисленных в следующем разделе Замечаний.

  • MF_BYCOMMAND - Указывает, что параметр uPosition дает идентификатор пункта меню. Флажок MF_BYCOMMAND является значением по умолчанию, если ни флажок MF_BYCOMMAND ни флажок MF_BYPOSITION не установлен.
  • MF_BYPOSITION - Указывает, что параметр uPosition дает отсчитываемую от нуля относительную позицию пункта меню.

uIDNewItem
Определяет или идентификатор измененного пункта меню или, если параметр uFlags имеет установленный флажок MF_POPUP, дескриптор "выскакивающего" меню или подменю.
lpNewItem
Указывает на содержание измененного пункта меню. Интерпретация этого параметра зависит от того, включает ли параметр uFlags в себя флажок MF_BITMAP, MF_OWNERDRAW или MF_STRING.

  • MF_BITMAP - Содержит дескриптор точечного рисунка.
  • MF_OWNERDRAW - Содержит 32-разрядное значение, поставляемое прикладной программой, которое может быть использовано для поддержки дополнительных данных родственного пункта меню. Значение находится в члене itemData структуры, указанной параметром lParam сообщения WM_MEASUREITEM или WM_DRAWITEM отправленного тогда, когда создавался пункт меню или модифицировался его внешний вид.
  • MF_STRING - Содержит указатель на строку с символом нуля в конце (значение по умолчанию).

Возвращаемые значения
Если функция завершается успешно, величина возвращаемого значения - не ноль.
Если функция завершается с ошибкой, величина возвращаемого значения - ноль. Чтобы получать расширенные данные об ошибках, вызовите GetLastError.

Замечания
Если 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), этот флажок показывает на экране снятую метку "галочки" рядом с пунктом меню.

Следующие группы флажков не могут быть использованы вместе:

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

Windows 95/98/Me: ModifyMenuW поддерживается Microsoft Layer для Уникода. Чтобы использовать его, Вы должны добавить некоторые файлы в вашу прикладную программу, как намечено в общих чертах в Microsoft Layer для Уникода для оперативных систем Windows 95/98/Me.

За примером обратитесь к статье Настройки шрифта текстовых строк пункта меню.

Смотри также
AppendMenu, CheckMenuItem, DrawMenuBar, EnableMenuItem, SetMenuItemBitmaps, SetMenuItemInfo, WM_DRAWITEM, WM_MEASUREITEM

Размещение и совместимость ModifyMenu

Windows NT			Да 
Win95				Да 
Win32s				Да 
Импортируемая библиотека		user32.lib 
Заголовочный файл			winuser.h 
Unicode				WinNT
Замечания по платформе		Не имеется

| |
Автор Владимир Соковиков.
[AD]