Поделиться через


Структура MENUITEMINFOA (winuser.h)

Содержит сведения об элементе меню.

Синтаксис

typedef struct tagMENUITEMINFOA {
  UINT      cbSize;
  UINT      fMask;
  UINT      fType;
  UINT      fState;
  UINT      wID;
  HMENU     hSubMenu;
  HBITMAP   hbmpChecked;
  HBITMAP   hbmpUnchecked;
  ULONG_PTR dwItemData;
  LPSTR     dwTypeData;
  UINT      cch;
  HBITMAP   hbmpItem;
} MENUITEMINFOA, *LPMENUITEMINFOA;

Члены

cbSize

Тип: UINT

Размер структуры в байтах. Вызывающий объект должен присвоить этому члену значение sizeof(MENUITEMINFO).

fMask

Тип: UINT

Указывает элементы для извлечения или задания. Этот элемент может быть одним или несколькими из следующих значений.

Значение Значение
MIIM_BITMAP
0x00000080
Извлекает или задает элемент hbmpItem .
MIIM_CHECKMARKS
0x00000008
Извлекает или задает элементы hbmpChecked и hbmpUnchecked .
MIIM_DATA
0x00000020
Извлекает или задает элемент dwItemData .
MIIM_FTYPE
0x00000100
Извлекает или задает элемент fType .
MIIM_ID
0x00000002
Извлекает или задает элемент wID .
MIIM_STATE
0x00000001
Извлекает или задает элемент fState .
MIIM_STRING
0x00000040
Извлекает или задает член dwTypeData .
MIIM_SUBMENU
0x00000004
Извлекает или задает элемент hSubMenu .
MIIM_TYPE
0x00000010
Извлекает или задает члены fType и dwTypeData .

MIIM_TYPE заменяется MIIM_BITMAP, MIIM_FTYPE и MIIM_STRING.

fType

Тип: UINT

Тип элемента меню. Этот элемент может быть одним или несколькими из следующих значений.

Значения MFT_BITMAP, MFT_SEPARATOR и MFT_STRING не могут быть объединены друг с другом. Присвойте параметру fMaskзначение MIIM_TYPE для использования fType.

fType используется только в том случае, если fMask имеет значение MIIM_FTYPE.

Значение Значение
MFT_BITMAP
0x00000004L
Отображает элемент меню с использованием растрового изображения. Слово нижнего порядка элемента dwTypeData является дескриптором растрового изображения, а элемент cch игнорируется.

MFT_BITMAP заменяется MIIM_BITMAP и hbmpItem.

MFT_MENUBARBREAK
0x00000020L
Places пункт меню в новой строке (для строки меню) или в новом столбце (для раскрывающегося меню, подменю или контекстного меню). Для раскрывающегося меню, подменю или контекстного меню вертикальная линия отделяет новый столбец от старого.
MFT_MENUBREAK
0x00000040L
Places пункт меню в новой строке (для строки меню) или в новом столбце (для раскрывающегося меню, подменю или контекстного меню). В раскрывающемся меню, подменю или контекстном меню столбцы не разделяются вертикальной линией.
MFT_OWNERDRAW
0x00000100L
Назначит ответственность за рисование пункта меню окну, которому принадлежит меню. Окно получает сообщение WM_MEASUREITEM перед первым отображением меню и WM_DRAWITEM сообщение всякий раз, когда необходимо обновить внешний вид пункта меню. Если это значение указано, элемент dwTypeData содержит значение, определяемое приложением.
MFT_RADIOCHECK
0x00000200L
Отображает выбранные пункты меню с помощью переключателя, а не проверка, если элемент hbmpChecked имеет значение NULL.
MFT_RIGHTJUSTIFY
0x00004000L
Правое обоснование пункта меню и всех последующих элементов. Это значение допустимо, только если пункт меню находится в строке меню.
MFT_RIGHTORDER
0x00002000L
Указывает, что меню каскадно справа налево (по умолчанию — слева направо). Используется для поддержки языков справа налево, таких как арабский и иврит.
MFT_SEPARATOR
0x00000800L
Указывает, что пункт меню является разделителем. Разделитель пунктов меню отображается в виде горизонтальной разделительной линии. Члены dwTypeData и cch игнорируются. Это значение допустимо только в раскрывающемся меню, подменю или контекстном меню.
MFT_STRING
0x00000000L
Отображает элемент меню с помощью текстовой строки. Элемент dwTypeData является указателем на строку, завершаемую null, а член cch — это длина строки.

MFT_STRING заменяется MIIM_STRING.

fState

Тип: UINT

Состояние элемента меню. Этот элемент может быть одним или несколькими из этих значений. Задайте для параметра fMaskзначение MIIM_STATE для использования fState.

Значение Значение
MFS_CHECKED
0x00000008L
Проверяет пункт меню. Дополнительные сведения о выбранных пунктах меню см. в разделе элемент hbmpChecked .
MFS_DEFAULT
0x00001000L
Указывает, что элемент меню является элементом по умолчанию. Меню может содержать только один пункт меню по умолчанию, который отображается полужирным шрифтом.
MFS_DISABLED
0x00000003L
Отключает элемент меню и выделяет его серым цветом, чтобы его нельзя было выбрать. Это эквивалентно MFS_GRAYED.
MFS_ENABLED
0x00000000L
Включает элемент меню, чтобы его можно было выбрать. Это состояние по умолчанию.
MFS_GRAYED
0x00000003L
Отключает элемент меню и выделяет его серым цветом, чтобы его нельзя было выбрать. Это эквивалентно MFS_DISABLED.
MFS_HILITE
0x00000080L
Выделяет пункт меню.
MFS_UNCHECKED
0x00000000L
Снимите флажок пункта меню. Дополнительные сведения о очистке пунктов меню см. в разделе элемент hbmpChecked .
MFS_UNHILITE
0x00000000L
Удаляет выделение из пункта меню. Это состояние по умолчанию.

wID

Тип: UINT

Определяемое приложением значение, идентифицирующее элемент меню. Присвойте fMaskзначение MIIM_ID для использования wID.

hSubMenu

Тип: HMENU

Дескриптор раскрывающегося меню или подменю, связанного с элементом меню. Если элемент меню не является элементом, открывающим раскрывающееся меню или подменю, этот элемент имеет значение NULL. Задайте для параметра fMaskзначение MIIM_SUBMENU для использования hSubMenu.

hbmpChecked

Тип: HBITMAP

Дескриптор растрового рисунка, который будет отображаться рядом с элементом, если он выбран. Если этот элемент имеет значение NULL, используется растровое изображение по умолчанию. Если указано значение типа MFT_RADIOCHECK , то растровое изображение по умолчанию является маркером. В противном случае это проверка метка. Задайте для параметра fMaskзначение MIIM_CHECKMARKS для использования hbmpChecked.

hbmpUnchecked

Тип: HBITMAP

Дескриптор растрового рисунка, который будет отображаться рядом с элементом, если он не выбран. Если этот член имеет значение NULL, то растровое изображение не используется. Задайте для параметра fMaskзначение MIIM_CHECKMARKS для использования hbmpUnchecked.

dwItemData

Тип: ULONG_PTR

Определяемое приложением значение, связанное с элементом меню. Присвойте fMaskзначение MIIM_DATA для использования dwItemData.

dwTypeData

Тип: LPTSTR

Содержимое пункта меню. Значение этого элемента зависит от значения fType и используется только в том случае, если флаг MIIM_TYPE установлен в элементе fMask .

Чтобы получить пункт меню типа MFT_STRING, сначала найдите размер строки, задав элементу dwTypeDataэлемента MENUITEMINFOзначение NULL , а затем вызвав GetMenuItemInfo. Значение cch+1 является требуемым размером. Затем выделите буфер такого размера, поместите указатель на буфер в dwTypeData, инкремент cch и вызовите Метод GetMenuItemInfo еще раз, чтобы заполнить буфер строкой. Если полученный элемент меню имеет какой-то другой тип, getMenuItemInfo присваивает члену dwTypeData значение, тип которого задается элементом fType .

При использовании с функцией SetMenuItemInfo этот элемент должен содержать значение, тип которого задается элементом fType .

dwTypeData используется только в том случае, если флаг MIIM_STRING установлен в элементе fMask .

cch

Тип: UINT

Длина текста элемента меню в символах при получении сведений об элементе меню типа MFT_STRING . Однако cch используется только в том случае, если флаг MIIM_TYPE задан в элементе fMask и в противном случае равен нулю. Кроме того, cch игнорируется, если содержимое пункта меню задано путем вызова SetMenuItemInfo.

Обратите внимание, что перед вызовом GetMenuItemInfo приложение должно задать cch длину буфера, на который указывает член dwTypeData . Если полученный элемент меню имеет тип MFT_STRING (как указано элементом fType ), getMenuItemInfo изменяет cch на длину текста элемента меню. Если полученный пункт меню имеет какой-то другой тип, GetMenuItemInfo устанавливает для поля cch нулевое значение.

Элемент cch используется, когда флаг MIIM_STRING установлен в элементе fMask .

hbmpItem

Тип: HBITMAP

Дескриптор отображаемого растрового изображения или одно из значений в следующей таблице. Он используется при установке флага MIIM_BITMAP в элементе fMask .

Значение Значение
HBMMENU_CALLBACK
((HBITMAP) -1)
Точечный рисунок, рисуемый окном, которому принадлежит меню. Приложение должно обрабатывать WM_MEASUREITEM и WM_DRAWITEM сообщения.
HBMMENU_MBAR_CLOSE
((HBITMAP) 5)
Кнопка "Закрыть" в строке меню.
HBMMENU_MBAR_CLOSE_D
((HBITMAP) 6)
Отключенная кнопка закрытия для строки меню.
HBMMENU_MBAR_MINIMIZE
((HBITMAP) 3)
Кнопка свернуть для строки меню.
HBMMENU_MBAR_MINIMIZE_D
((HBITMAP) 7)
Отключенная кнопка свернуть для строки меню.
HBMMENU_MBAR_RESTORE
((HBITMAP) 2)
Кнопка "Восстановить" для строки меню.
HBMMENU_POPUP_CLOSE
((HBITMAP) 8)
Кнопка "Закрыть" для подменю.
HBMMENU_POPUP_MAXIMIZE
((HBITMAP) 10)
Кнопка "Развернуть" для подменю.
HBMMENU_POPUP_MINIMIZE
((HBITMAP) 11)
Кнопка свернуть для подменю.
HBMMENU_POPUP_RESTORE
((HBITMAP) 9)
Кнопка "Восстановить" для подменю.
HBMMENU_SYSTEM
((HBITMAP) 1)
Значок Windows или значок окна, указанного в dwItemData.

Комментарии

Структура MENUITEMINFO используется с функциями GetMenuItemInfo, InsertMenuItem и SetMenuItemInfo .

Меню может отображать элементы с помощью текста, растровых рисунков или и того, и другого.

Примечание

Заголовок winuser.h определяет MENUITEMINFO как псевдоним, который автоматически выбирает версию ANSI или Юникод этой функции на основе определения константы препроцессора ЮНИКОДа. Использование псевдонима, не зависящий от кодирования, с кодом, который не является нейтральным для кодировки, может привести к несоответствиям, которые приводят к ошибкам компиляции или времени выполнения. Дополнительные сведения см. в разделе Соглашения для прототипов функций.

Требования

Требование Значение
Минимальная версия клиента Windows 2000 Professional [только классические приложения]
Минимальная версия сервера Windows 2000 Server [только классические приложения]
Верхняя часть winuser.h (включая Windows.h)

См. также раздел

Основные понятия

GetMenuItemInfo

InsertMenuItem

Меню

Справочные материалы

SetMenuItemInfo

WM_DRAWITEM

WM_MEASUREITEM