Структура MENUITEMINFO


Структура MENUITEMINFO содержит информацию о пункте меню.

Синтаксис

typedef struct tagMENUITEMINFO {
  UINT   
cbSize
  UINT   
fMask
  UINT   
fType
  UINT   
fState
  UINT   
wID
  HMENU  
hSubMenu
  HBITMAP
hbmpChecked
  HBITMAP
hbmpUnchecked
  ULONG_PTR
dwItemData
  LPTSTR 
dwTypeData
  UINT   
cch
  HBITMAP
hbmpItem;
} MENUITEMINFO, *LPMENUITEMINFO; 

Члены структуры

cbSize

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

fMask

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

Значение Предназначение
MIIM_BITMAP
Microsoft ® Windows ® 98/Windows Millennium Edition (Windows Me), Windows 2000/Windows XP: Извлекает или устанавливает член hbmpItem
MIIM_CHECKMARKS Извлекает или устанавливает члены hbmpChecked и hbmpUnchecked
MIIM_DATA Извлекает или устанавливает член dwItemData
MIIM_FTYPE Windows 98/Windows Me, Windows 2000/Windows XP: Извлекает или устанавливает член fType
MIIM_ID
Извлекает или устанавливает член wID
MIIM_STATE
Извлекает или устанавливает член fState.
MIIM_STRING
Windows 98/Windows Me, Windows 2000/Windows XP: Извлекает или устанавливает член dwTypeData.
MIIM_SUBMENU
Извлекает или устанавливает член hSubMenu
MIIM_TYPE
Извлекает или устанавливает члены fType и dwTypeData. Windows 98/Me, Windows 2000/XPMIIM_TYPE заменяется MIIM_BITMAP, MIIM_FTYPE и MIIM_STRING.

fType

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

Значения MFT_BITMAP, MFT_SEPARATOR и  MFT_STRING не могут быть объединены друг с другом. Чтобы использовать параметр fType, установите fMask в MIIM_TYPE.
Windows 98/Me и Windows 2000/XP: fType используется только в том случае, если fMask имеет значение MIIM_FTYPE.
Значение Предназначение
MFT_BITMAP
Показывает на экране пункт меню, используя точечный рисунок (значок). Младшее слово члена dwTypeData  - дескриптор значка, а член cch  игнорируется.
Windows 98/Me, Windows 2000/XP: MFT_BITMAP замещается флажком MIIM_BITMAP и hbmpItem.
MFT_MENUBARBREAK Помещает пункт меню в новую строку (для строки меню) или в новом столбце (для "выпадающего" меню, подменю или контекстного меню). Для "выпадающего" меню, подменю или контекстного меню, вертикальная линия отделяет новый столбец от старого.
MFT_MENUBREAK Помещает пункт меню в новую строку (для строки меню) или в новом столбце (для "выпадающего" меню, подменю или контекстного меню). Для "выпадающего" меню, подменю или контекстного меню, столбцы не отделяются вертикальной линией.
MFT_OWNERDRAW
Назначает ответственного за рисование пункта меню в окне, которое владеет меню. Окно получает сообщение WM_MEASUREITEM  прежде, чем меню впервые отображается и сообщение WM_DRAWITEM  всякий раз, когда внешний вид пункта меню должен быть модифицирован. Если это значение устанавливается, член dwTypeData  содержит определяемое программой значение.
MFT_RADIOCHECK
Выводит на экран выбор пунктов меню, используя метку радио-кнопки  вместо "галочки", если член hbmpChecked  имеет значение ПУСТО (NULL).
MFT_RIGHTJUSTIFY
Выравнивает по правой стороне пункт меню и любые последующие пункты. Это значение допустимо только тогда, если пункт меню находится в строке меню. 
MFT_RIGHTORDER
Windows 95/98/Me, Windows 2000/XP: Устанавливает, что ориентация каскада меню справа налево (значение по умолчанию - слева направо). Этот флажок используется для, поддержания ориентации справа налево в таких языках как арабский  и еврейский язык.
MFT_SEPARATOR
Устанавливает разделитель пунктов меню. Разделитель пунктов меню выглядит как горизонтальная разделительная линия. Члены DwTypeData и cch  игнорируются. Это значение допустимо только в "выпадающем" меню, подменю или контекстном меню.
MFT_STRING
Показывает на экране пункт меню, используя текстовую строку. Член DwTypeData  - указатель на символьную строку с нулем в конце, а член cch  - длина строки. 
Windows 98/Me, Windows 2000/XP: флажок MFT_STRING замещается MIIM_STRING.
fState
Состояние пункта меню. Этот член может состоять из одного или нескольких этих значений. Чтобы использовать fState, установите член  fMask в MIIM_STATE, .
Значение Предназначение
MFS_CHECKED
Отмечает "галочкой" пункт меню. Подробную информацию об выбранных пунктах меню, см. в описании члена hbmpChecked этой структуры.
MFS_DEFAULT
Устанавливает, что этот пункт меню - по умолчанию. Меню может содержать только один заданный по умолчанию пункт меню, который  отображается на экране полужирным шрифтом. 
MFS_DISABLED
Отключает пункт меню и окрашивает его в серый цвет (делает недоступным), чтобы он не мог быть выбран. Это эквивалент флажка MFS_GRAYED.
MFS_ENABLED
Включает в работу пункт меню, чтобы он мог быть выбран. Это - заданное по умолчанию состояние.
MFS_GRAYED
Запрещает работу пункта меню и окрашивает его в серый цвет (делает недоступным), чтобы он не мог выбираться. Этот флажок эквивалентен MFS_DISABLED.
MFS_HILITE
Выделяет пункт меню.
MFS_UNCHECKED
Снимает отметку "галочкой" пункта меню. Подробную информации об приведенных в исходное состояние пунктах меню, см. описание члена hbmpChecked.
MFS_UNHILITE
Удаляет выделение пункта меню. Это - заданное по умолчанию состояние. 
wID
Определяемое программой 16-битовое значение, которое идентифицирует пункт меню. Чтобы использовать wID, установите член fMask в MIIM_ID.
 
hSubMenu

Дескриптор "выпадающего" меню или подменю, связанного с пунктом меню. Если пункт меню - не пункт, который открывает "выпадающее" меню или подменю, этот член равен ПУСТО (NULL). Чтобы использовать hSubMenu, установите член  fMask в MIIM_SUBMENU.

hbmpChecked

Дескриптор точечного рисунка (значка), который показывается на экране рядом с пунктом, если он выбирается. Если этот член - значение ПУСТО (NULL), используется заданный по умолчанию значок . Если задается значение типа MFT_RADIOCHECK , заданный по умолчанию (типичный) точечный рисунок - жирная точка. В противном случае, это - галочка. Чтобы использовать hbmpChecked, установите член fMask в MIIM_CHECKMARKS.

hbmpUnchecked

Дескриптор точечного рисунка, который показывается на экране рядом с пунктом, если он не выбран. Если этот член - значение ПУСТО (NULL), точечный рисунок не используется. Чтобы использовать hbmpUnchecked, установите член fMask в MIIM_CHECKMARKS, .

dwItemData

Определяемое программой значение, связанное с пунктом меню. Чтобы использовать dwItemData, установите член fMask в MIIM_DATA.

dwTypeData

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

Чтобы извлечь пункт меню типа MFT_STRING, сначала найдите размер строки, устанавливая член dwTypeData структуры MENUITEMINFO в значение ПУСТО (NULL), а затем вызовите функцию GetMenuItemInfo. Значение cch+1 - необходимый размер. Затем выделите буфер этого размера, поместите указатель на буфер в член dwTypeData, увеличьте cch, и вызовите функцию GetMenuItemInfo еще раз, чтобы заполнить буфер строкой. Если извлеченный пункт меню имеет какой-либо другой тип, тогда  GetMenuItemInfo устанавливает член dwTypeData  в значение, тип которого определяется членом fType.

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

Windows 98/Me и Windows 2000/XP: dwTypeData используется только тогда, если флажок  MIIM_STRING установлен в члене fMask .

cch

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

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

Windows 98/Me, Windows 2000/XP:  член cch  используется njulf, когда флажок MIIM_STRING - установлен в члене fMask .

hbmpItem

Windows 98/Me, Windows 2000/XP: Дескриптор точечного рисунка, который будет отображен, или этого может быть одним из значений в нижеследующей таблице. Этот член используется тогда, когда флажок MIIM_BITMAP - установлен в  члене fMask.
Значение Предназначение
HBMMENU_CALLBACK Точечный рисунок рисуемый окном, которое владеет меню. Приложение должно обрабатывать сообщения WM_MEASUREITEM и WM_DRAWITEM
HBMMENU_MBAR_CLOSE
Кнопка закрывающая строку меню. 
HBMMENU_MBAR_CLOSE_D
Отключение кнопки, закрывающей строку меню.
HBMMENU_MBAR_MINIMIZE
Кнопка свертывания  строки меню. 
HBMMENU_MBAR_MINIMIZE_D
Отключение кнопки, свертывающей строку меню.
HBMMENU_MBAR_RESTORE
Кнопка восстановления  строки меню.
HBMMENU_POPUP_CLOSE
Кнопка закрывающая подменю.
HBMMENU_POPUP_MAXIMIZE
Кнопка развертывающая подменю.
HBMMENU_POPUP_MINIMIZE
Кнопка свертывающая подменю.
HBMMENU_POPUP_RESTORE
Кнопка восстанавливающая подменю.
HBMMENU_SYSTEM
Значок Windows или значок окна, определяемого в члене dwItemData.

Замечания

Меню может использовать текст или точечные рисунки, но не оба.

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

Windows 98/Me и Windows 2000/XP: Меню может использовать текст или точечные рисунки, или оба.  

Смотри также

Краткий обзор Меню  GetMenuItemInfoInsertMenuItemSetMenuItemInfo,  WM_DRAWITEM,  WM_MEASUREITEM

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

Windows. NET Server

Да

Windows XP

Да

Windows 2000

Да

Windows NT

Да версии 4.0 и выше

Windows Me

Да

Windows 98

Да

Windows 95

Да

Импортируемая библиотека

-

Заголовочный файл

 

- объявлено в

Winuser.h

- включено в

Windows.h

Unicode

Нет

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

Не имеется

 

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

Hosted by uCoz