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

Файл заголовка

«define   IDM_FIRST      300 «define   IDM SECOND   301 «define  MAXMENUNAMES   100 VOID  AppendMemory (   LPTSTR  IpDest, LPTSTR   IpSource,    int   nBytes, BOOL  bReset,   BOOL bConvert   ) ;

Функции WndProc и AppendMemory

 

cm.    \local-sources\chap06\06-21.txt

 

MenuitemFromPoint                            • Windows 98   • Windows 2000

 

Описание

Функция MenuitemFromPoint определяет, какой пункт меню находится в указанной точке экрана,  если он там действительно  есть.  Функция MenuitemFromPoint может применяться для работы с определяемыми пользователем и незакрепленными всплывающими меню.

 

Синтаксис

int MenuItemFromPoint( HWND hWnd, HMENU hMenu, POINT ptScreen )

 

Параметры

 

hWnd

HWND. Дескриптор окна, содержащего строку меню или всплывающее меню. Если этот параметр установлен в NULL и параметр hMenu представляет всплывающее меню, функция MenuitemFromPoint ищет окно меню.

 

hMenu

HMENU. Дескриптор меню, для которого нужно выполнить проверку попадания.

 

ptScreen

POINT. Местонахождение точки, в которой нужно выполнить проверку. Если параметр hMenu указывает строку меню, этот параметр должен быть представлен в экранных координатах; в ином случае он должен быть представлен в клиентских координатах.

 

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

int. Позиция пункта меню с отсчетом от нуля в указанном месте или -1, если в указанном месте нет пункта меню.

 

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

winuser.h

 

Пример

В следующем примере показано использование функции MenuitemFromPoint для определения пункта меню, на котором установлен курсор мыши. Для высвечивания текущего пункта применяется функция HiliteMenuItem. При выборе опции меню Test! выполняется перехват позиции мыши и все сообщения мыши перенаправляются через функцию WndProc приложения. Выполняется обработка сообщения WM_MOUSEMOVE для определения того, над каким пунктом меню перемещается мышь.

 

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

 

RemoveMenu                                       • Windows 98   •  Windows 2000

Описание

Функция RemoveMenu удаляет пункт из указанного меню. Все всплывающие меню удаляются, но не уничтожаются. Всплывающие меню, освобожденные таким образом, могут быть повторно использованы. Необходимо следить за тем, чтобы все меню были либо подключены к главному меню приложения, либо уничтожены с помощью функции DestroyMenu перед завершением работы приложения. Применение функции RemoveMenu в подобных ситуациях намного проще по сравнению с DeleteMenu, поскольку функция RemoveMenu позволяет снова подключить всплывающее меню, а не воссоздавать его с нуля. Перед использованием функции RemoveMenu необходимо вызвать функцию GetSubMenu для получения дескриптора всплывающего меню.

Синтаксис

BOOL RemoveMenu( HMENU hmenu, UINT ultem, UINT uFlags )

Параметры

hmenu

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

ultem

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

uFlags

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

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

 

Значение

Описание

 

MF_BYCOMMAND

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

 

MF_BYPOSITION

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

 

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

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

 

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

winuser.h

 

См. также

CreatePopupMenu, DeleteMenu, DrawMenuBar, GetSubMenu, InsertMenuItem, SclMenuItemlnfo

 

Пример

В следующей процедуре функция RemoveMenu используется для модификации меню.

 

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

 

SetMenu                                              • Windows 98   • Windows 2000

 

Описание

Функция SetMenu подключает меню к окну. Подключаемое меню может быть определено в файле ресурса (RC) или создано в приложении с помощью функции CreateMenu или LoadMenuIndirect. Любое существующее меню будет удалено.

Функция SetMenu применяется для переключения на новое меню или для удаления меню из окна.

 

Синтаксис

BOOL SetMenu( HWND hWnd, HMENU hMenu )

 

Параметры

 

hWnd

HWND. Дескриптор окна, для которого нужно сменить меню.

 

hMenu

HMENU. Дескриптор меню, которое должно быть добавлено. Для выборки дескриптора меню, определенного в файле ресурса (RC), применяется функция LoadMenu. Для удаления меню из окна, вместо его смены, этот параметр должен быть установлен в NULL.

 

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

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

 

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

winuser.h

 

См. также

CreateMenu, DestroyMenu, DrawMenuBar, GetMenu, LoadMenu, LoadMenu Indirect

 

Пример

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

 

SetMenuDefaultltem                             • Windows 98   • Windows 2000

 

Описание

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

 

Синтаксис

BOOL SetMenuDefaultItem( HMENU hmenu, UINT ultem, UINT uByPos )

 

Параметры

 

hmenu

HMENU. Дескриптор меню, содержащего пункт меню.

 

и Item

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

 

uByPos

UINT. Указывает смысл параметра ultem. Если этот параметр равен FALSE, ultem идентификатор пункта меню; в ином случае ultem позиция пункта меню.

 

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

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

 

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

winuser.h

 

См. также

GetMenuDefaultltem, GetMenu, GetSubMenu

 

Пример

В следующем примере (рис. 6.6) показано, как устанавливать и выбирать пункт меню, применяемый по умолчанию, с помощью функций SetMenuDefaultltem и GetMenuDefaultltem. Выбранный пункт выпадающего меню становится применяемым по умолчанию, если он еще не был таковым; при выборе пункта, применяемого по умолчанию, он теряет этот статус.

 

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