BOOL ModifyMenu (HMENU hMenu, UINT uItem, UINT uFlags, UINT uNewItem, LPCTSTR lpszNewItem)
Параметры:
hMenu - хэндл меню, которому принадлежит пункт меню.
uItem - пункт меню, состояние которого изменяется.
uFlags - комбинация битовых флагов, во-первых, определяющих элемент, подлежащий изменению (MF_BYCOMMAND или MF_BYPOSITION), а во-вторых, определяющих состояние элемента после изменения.
uNewItem - указывает или идентификатор измененного элемента, или хэндл нового меню (если, конечно, в третьем аргументе установлен флаг MF_POPUP).
lpszNewItem- содержимое нового измененного пункта меню. Зависит от установленных флагов uFlags. Установлен флаг MF_BITMAP - параметр содержит хэндл bitmap'а. Установлен флаг MF_STRING - параметр содержит указатель на строку символов и т.д.
Возвращаемое значение: при успешном выполнении - TRUE, иначе - FALSE.
Функция DeleteMenu () удаляет элемент из меню и освобождает все связанные с ним ресурсы. Если удаляемый элемент указывает на временное меню, то функция DeleteMenu удаляет и это временное меню. Синтаксис функции:
BOOL DeleteMenu (HMENU hMenu, UINT uPosition, UINT uFlags)
Параметры:
hMenu - хэндл меню, которому принадлежит пункт меню.
uPosition - определяет удаляемый элемент. Его значение связано со значением параметра uFlags.
uFlags - задает способ истолкования параметра uPosition пункта меню. Если uFlags=MF_BYCOMMAND (значение по умолчанию), то значение uPosition равно идентификатору команды удаляемого элемента. Если же uFlags=MF_BYPOSITION, то значение uPosition равно позиции удаляемого элемента в меню.
Возвращаемое значение: при успешном выполнении - TRUE, иначе - FALSE.
Функция RemoveMenu () удаляет элемент из меню, не разрушая связанные с ним ресурсы. Эти ресурсы можно использовать в дальнейшем. Синтаксис функции:
BOOL RemoveMenu (HMENU hMenu, UINT uPosition, UINT uFlags)
Параметры:
hMenu - хэндл меню, которому принадлежит пункт меню.
uPosition - определяет удаляемый элемент. Его значение связано со значением параметра uFlags.
uFlags - задает способ истолкования параметра uPosition пункта меню. Если uFlags=MF_BYCOMMAND (значение по умолчанию), то значение uPosition равно идентификатору команды удаляемого элемента. Если же uFlags=MF_BYPOSITION, то значение uPosition равно позиции удаляемого элемента в меню.
Возвращаемое значение: при успешном выполнении - TRUE, иначе - FALSE.
Для разрушения меню вызывают функцию DestroyMenu (). Эта функция разрушает заданное меню и освобождает ресурсы, которые меню занимает. Эту функцию окна вызывают для разрушения тех меню, которые они создали, но не подключили к себе. Подключенные Меню автоматически разрушаются при разрушении окна. Синтаксис функции:
BOOL DestroyMenu (HMENU hMenu)
Параметры:
hMenu - хэндл меню, которому принадлежит пункт меню.
Возвращаемое значение: при успешном выполнении - TRUE, иначе - FALSE
Функция GetMenu () возвращает дескриптор главного меню окна hWnd.
HMENU GetMenu (HWND hWnd)
Параметры:
hWnd - хэндл окна, которому принадлежит главное меню.
Возвращаемое значение: при успешном выполнении - дескриптор меню, иначе - NULL.
Функция GetSubMenu () возвращает дескриптор всплывающего меню, которое расположено в позиции nPos указанного меню hMenu. Причем первому временному меню в hMenu соответствует нулевое значение параметра nPos. Если функция GetSubMenu () вернула значение NULL, то hMenu в позиции nPos не содержит временное меню:
HMENU GetSubMenu (HMENU hMenu, int nPos)
Параметры:
hMenu - хэндл меню.
nPos - позиция требуемого временного меню.
Возвращаемое значение: при успешном выполнении - дескриптор меню, иначе - NULL.
Плавающее меню создают обычным способом, но не вставляют в другое меню. Для отображения и выбора строк этого меню вызывают функцию TrackPopupMenu ().
Функция TrackPopupMenu () предназначена для вывода на экран плавающего меню и создания своего собственного цикла обработки сообщений, завершающего работу после выбора строки. Она не возвращает управление до тех пор, пока работа с меню не будет завершена выбором строки или отказом от выбора. Синтаксис функции:
BOOL TrackPopupMenu (HMENU hMenu, UINT uFlags, int x, int y, int nReserved, HWND hwnd, CONST RECT *prcRect)
Параметры:
hMenu - дескриптор отображаемого плавающего меню. Он может быть создан функцией CreatePopupMenu () или получен с помощью функции GetSubMenu ().
uFlags - комбинация флагов, которые задают функциональные параметры плавающего меню.
х - координата по горизонтали от левого края экрана.
у - координата по вертикали от верхнего края экрана.
nReserved - зарезервированный параметр, должен быть всегда равен нулю.
hwnd - дескриптор уже существующего окна-владельца, которое получит сообщения от меню. Сообщение WM_COMMAND окно получит только после завершения работы функции TrackPopupMenu ().
prcRect - указатель на прямоугольную область, находясь в пределах которой можно работать с меню. Если сделать щелчок мышью за пределами этого прямоугольника, плавающее меню исчезнет. Если prcRect=NULL, то эта область ограничена прямоугольной рамкой плавающего меню.
Возвращаемое значение: в случае успешного выполнения функция возвращает ненулевое значение. Если в параметре uFlags задано TPM_RETURNCMD, то возвращаемое значение равно идентификатору команды выбранной строки. Если элемент не выбран, возвращаемое значение - нуль.
Следующие константы uFlags задают способ размещения меню по горизонтали относительно параметра х:
Константа | Пояснение |
ТРМ_CENTERALIGN | Центр меню по горизонтали совпадает с х |
ТРМ_LEFTALIGN | Левый край меню совпадает с х |
TPM_RIGHTALIGN | Правый край меню совпадает с х |
Следующие константы uFlags задают способ размещения меню по вертикали относительно параметра у:
Константа | Пояснение |
TPM_BOTTOMALIGN | Нижний край меню совпадает с у |
TPM_TOPALIGN | Верхний край меню совпадает с у |
TPM_VCENTERALIGN | Центр меню по вертикали совпадает с у |
Следующие константы uFlags задают способ выбора строк меню без указания окна-владельца для меню:
Константа | Пояснение |
ТРМ_NONOTIFY | Не посылать сообщения о выборе строки |
TPM_RETURNCMD | Возвращать идентификатор выбранной команды |
Следующие константы uFlags задают кнопку мыши, которую прослеживает плавающее меню:
Константа | Пояснение |
ТРМ_LEFTBUTTON | Прослеживает левую кнопку мыши |
TPM_RIGHTBUTTON | Прослеживает правую кнопку мыши |