Меню. Главные меню и всплывающие меню, страница 7

SetMenuInfo                                       • Windows 98   • Windows 2000

 

Описание

Функция SetMenuInfo устанавливает информацию для указанного меню.

 

Синтаксис

BOOL SetMenuInfo( HMENU hMenu, LPCMENUINFO Ipcmi )

 

Параметры

 

hMenu

HMENU. Дескриптор меню.

 

Ipcmi

LPCMENUINFO. Указатель на структуру MENUINFO, которая состоит из констант. Определение структуры MENUINFO приведено в описании функции GetMenuInfo.

 

Возвращаемое значение

BOOL. В случае успешного выполнения функции возвращаемое значение отлично от нуля; в ином случае возвращаемое значение — нуль.

 

Включаемый файл

winuser.h

 

См. также

GetMenuInfo

 

SetMenultemBitmaps                           • Windows 98   • Windows 2000

 

Описание

В Windows для отметки пунктов меню применяется предусмотренное по умолчанию растровое изображение галочки. Его можно заменить определяемым пользователем растровым изображением с помощью функции SetMenultemBitmaps. Размеры растрового изображения галочки зависят от разрешающей способности экрана в системе, где выполняется приложение. Для определения этих размеров в целях масштабирования растрового изображения в соответствии с допустимыми размерами применяется функция GetSystemMetrics.

Отметки, определяемые пользователем, могут украсить прикладную программу; для этого не требуется большой объем памяти. После назначения нового растрового изображения функция CheckMenuItem будет автоматически использовать его для отметки или снятия отметки с пункта меню.

 

Синтаксис

BOOL SetMenuItemBitmaps( HMENU hmenu, UINT ultem, UINT uFlags, HBITMAP hbmUnchecked, HBITMAP hbmChecked)

 

Параметры

 

hmenu

HMENU. Дескриптор меню.

 

ultem

UINT. Идентификатор или позиция пункта меню, для которого должно быть установлено растровое изображение.

 

uFlags

UINT. Указывает способ интерпретации параметра ultem. Этот параметр должен иметь одно из значений, приведенных в табл. 6.17.

 

hbm Unchecked

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

 

Таблица 6.17. ЗначенияпараметровuFlags функцииSetMenultemBitmaps

 

Значение

Описание

 

MF_BYCOMMAND

Значение irftem представляет собой идентификационное значение меню.

 

MF_BYPOSITION

Значение uffem представляет собой относительную позицию пункта меню с отсчетом от нуля.

 

hbmChecked

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

 

Возвращаемое значение

BOOL. В случае успешного выполнения функции возвращаемое значение — TRUE; в ином случае возвращаемое значение — FALSE.

 

Включаемый файл

winuser.h

 

См. также

CheckMenuItem, CheckMenuRadioItem, GetMenu, GetMenuState

 

Пример

См. пример для функции GetMenuState.

 

SetMenultemlnfo                                   *  Windows 98    *  Windows 2000

 

Описание

Функция  SetMenultemlnfo позволяет изменить информацию о пункте меню. С помощью этой функции можно изменить текст или другие атрибуты пункта меню.

 

Синтаксис

BOOL SetMenuItemInfo( HMENU hMenu, UINT ultem, BOOL bByPosition, LPMENUITEMINFO Ipmii )

 

Параметры

 

hMenu

HMENU. Дескриптор меню, содержащего пункт, которой должен быть изменен.

 

ultem

UINT. Идентификатор или позиция пункта меню, который должен быть изменен. Смысл этого члена зависит от значения параметра bByPosition.

 

bByPosition

BOOL. Устанавливается равным FALSE, если параметр ultem содержит идентификатор пункта меню.

 

Ipmii

LPMENUITEMINFO. Указатель на структуру MENUITEMINFO, которая определяет новую информацию для указанного пункта меню. Определение структуры MENUITEMINFO приведено в описании функции GetMenu-Itemlnfo.

 

Возвращаемое значение

 

BOOL. TRUE, если меню было изменено; в ином случае — FALSE.

 

Включаемый файл

winuser.h

 

См. также

GetMenuItemlnfo

 

Пример

В следующем примере показано, как изменить опцию меню с помощью функции SetMenultemlnfo. Пункт меню Test! сменяется пунктом New Item! при его выборе. Идентификатор пункта меню также меняется, и при выборе этого пункта отображается окно сообщения.

 

См.    \local-sources\chap06\06-25.txt

 

TrackPopupR

Лепи                                 • Windows 98   • Windows 2000

Описание

Функция TrackPopupMenu отображает подменю в любом месте экрана. Всплывающее меню отображается после установки левого верхнего угла в точке экрана с координатами х,у. Чтобы меню могло находиться за пределами клиентской области приложения, используются экранные координаты. Для всплывающего меню вырабатываются обычные сообщения выбора пункта меню и сообщения WM_COMMAND Windows. Всплывающее меню исчезает после выполнения выбора или после щелчка на другой области экрана. Это средство широко применяется в приложениях Windows 98, а также в самой операционной системе, в связи с нажатием правой кнопки мыши. Функция TrackPopupMenu применяется для отображения "контекстно-зависимых" меню в приложении, когда пользователь нажимает правую кнопку мыши над окном приложения. Это меню можно вызывать и с помощью левой кнопки мыши, но в Windows 98 это не принято, и такой метод не должен использоваться. Дополнительная информация приведена в руководстве по стилю в главе 1 .

Синтаксис

BOOL TrackPopupMenu( HMENU hMenu, UINT uFlags, int x, int y, int nReserved, HWND hwnd, LPCRECT Iprc )

Параметры

hMenu

HMENU. Дескриптор всплывающего меню, которое должно быть отображено. Всплывающее меню можно создать, применив функцию Create-PopupMenu или вызвав функцию GetSubMenu для выборки дескриптора всплывающего меню, связанного с существующим пунктом меню.

и Flags

UINT. Указывает позиционирование и другие опции всплывающего меню. Этот параметр может иметь нуль и более значений, перечисленных в табл. 6.18. Флажки анимации могут применяться, только если в системе заданы соответствующие установки. Информация об этом может быть получена с помощью функции SystemParametersInfo. Анимация также игнорируется, если в меню применяется эффект перехода (постепенное введение или выведение изображения).

Таблица 6. 18. ЗначенияпараметровuFlags функцииTrackPopupMenu

 

Значение

Описание

 

TPM_BOTTOMALIGN

Установить нижнюю часть меню вровень с координатой, указанной параметром  у.

 

TPM_CENTERALIGN

Выровнять меню по горизонтали вокруг координаты центра, указанной параметром х.

 

TPM_HORNEGANIMATION

Выполнить анимацию меню слева направо.

 

TPM_HORPOSANIMATION

Выполнить анимацию меню справа налево.

 

TPM_NOANIMATION

Отобразить меню без использования анимации.

 

TPM_VERNEGANIMATION

Выполнить анимацию меню снизу вверх.

 

TPM_VERPOSANIMATION

Выполнить анимацию меню сверху вниз.

 

TPMJ.EFTALIGN

Установить левую сторону меню вровень с координатой, указанной параметром х. Это — горизонтальное выравнивание, заданное по умолчанию.

 

Значение

Описание

 

TPM_LEFTBUTTON

Отслеживать действия, выполняемые левой кнопкой мыши. Это — опция отслеживания, применяемая по умолчанию.

 

TPM_NONOTIFY

Никакие уведомительные сообщения не отправляются при щелчке на пункте меню.

 

TPM_RECURSE

Отобразить меню, когда другое меню уже показано. Это позволяет иметь в меню дополнительные контекстные меню.

 

TPM_RETURNCMD

Возвращать идентификатор выбранного пункта меню вместо отправки сообщения WM_COMMANO. Возвращаемое значение равно 0, если возникает ошибка или не выбран ни один пункт меню; возвращаемое значение равно -1 , если ошибка возникает на этапе проверки. Значения 0 или -1 не должны использоваться в качестве идентификаторов пунктов меню.

 

TPM_RIGHT ALIGN

Установить правую сторону меню вровень с координатой, указанной параметром х.

 

TPM_RIGHTBUTTON

Отслеживать действия, выполняемые правой кнопкой мыши.

 

TPMJTOP ALIGN

Установить верхнюю часть меню вровень с координатой, указанной параметром у. Это — предусмотренное по умолчанию выравнивание по вертикали.

 

TPM_VCENTERALIGN

Выровнять меню по вертикали вокруг координаты центра, указанной параметром у.

 

X

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

 

У

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

 

nReserved

int. Зарезервированное значение; должно быть равно 0.

 

hwnd

HWND. Дескриптор окна, которому принадлежит всплывающее меню. Это окно принимает все сообщения от меню. Сообщение WM_COMMAND не отправляется до тех пор, пока функция не выполнит возврат. Если установлен флажок TPM_NONOTIFY, функция не посылает сообщения окну; однако все равно нужно установить допустимый дескриптор окна.

 

Iprc

LPCRECT. Этот параметр игнорируется.

 

Возвращаемое значение

BOOL. Если указан флажок TPM_RETURNCMD, возвращаемое значение — пункт меню, который выбрал пользователь. Если пользователь отменил выбор пункта меню или произошла ошибка, возвращаемое значение — нуль. Если флажок TPM_RETURNCMD не указан и функция была выполнена успешно, возвращаемое значение отлично от нуля; в ином случае возвращаемое значение — нуль.

 

Включаемый файл

winuser.h

 

См. также

InsertMenuItem, CreatePopupMenu, GetSubMenu, TrackPopupMenuEx

 

Соответствующие сообщения

 

WM_COMMAND

 

Пример

В следующем примере показано, как создать незакрепленное всплывающее меню с использованием функций CreatePopupMenu и TrackPopupMenu. При нажатии правой кнопки мыши над клиентской областью приложения со-