Смекни!
smekni.com

Сообщения меню приложения Windows (стр. 2 из 2)

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 Прослеживает правую кнопку мыши