Активизация и блокирование строк меню 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Активизация и блокирование строк меню



Для изменения состояния элемента меню удобно использовать функцию EnableMenuItem:

BOOL WINAPI EnableMenuItem(HMENU hmenu, UINT idItem, UINT uEnable);

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

Параметр idItem определяет элемент меню, над которым выполняется операция. Интерпретация этого параметра зависит от значения параметра uEnable.

Параметр uEnable может принимать значения MF_DISABLED, MF_ENABLED или MF_GRAYED в комбинации с одним из значений: MF_BYCOMMAND или MF_BYPOSITION.

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

Для активизации заблокированного ранее элемента меню укажите значение MF_ENABLED.

Если в параметре fuFlags указан флаг MF_BYCOMMAND, параметр idItem определяет идентификатор элемента меню, состояние которого будет изменено. Если указан флаг MF_BYPOSITION, параметр idItem определяет порядковый номер элемента меню, состояние которого будет изменено.

Как и после выполнения других операций по изменению меню, после изменения состояния элемента меню необходимо вызвать функцию DrawMenuBar, которая отобразит внесенные изменения на экране.

Отметка строк

Элементы временного меню могут быть отмечены галочкой. Для включения и выключения такой отметки можно использовать функцию CheckMenuItem:

BOOL WINAPI CheckMenuItem(HMENU hmenu, UINT idItem, UINT fuCheck);

Параметр hmenu указывает идентификатор меню, над элементом которого будет выполняться операция включения или выключения отметки.

Параметр idItem определяет элемент меню, над которым выполняется операция. Интерпретация этого параметра зависит от значения параметра fuCheck.

Параметр fuCheck может принимать значения MF_CHECKED или MF_UNCHECKED в комбинации с одним из значений: MF_BYCOMMAND или MF_BYPOSITION.

Для включения отметки элемента меню необходимо использовать значение MF_CHECKED. Для выключения отметки элемента меню укажите значение MF_UNCHECKED.

Если в параметре fuCheck указан флаг MF_BYCOMMAND, параметр idItem определяет идентификатор элемента меню, отметка которого будет изменена. Если указан флаг MF_BYPOSITION, параметр idItem определяет порядковый номер элемента меню, отметка которого будет изменена.

Выделение строк

Для выделения строк меню верхнего уровня, расположенных в полосе меню ниже заголовка окна, можно использовать функцию HiliteMenuItem:

BOOL WINAPI HiliteMenuItem(HWND hwnd, HMENU hmenu, UINT idItem, UINT fuHilite);

Параметр hwnd должен содержать идентификатор окна, для которого выполняется операция выделения.

Через параметр hMenu необходимо передать идентификатор соответствующего меню верхнего уровня.

Параметр idItem определяет элемент меню, над которым выполняется операция выделения. Интерпретация этого параметра зависит от значения параметра fuHilite.

Параметр fuHilite может принимать значения MF_HILITE или MF_UNHILITE в комбинации с одним из значений: MF_BYCOMMAND или MF_BYPOSITION.

Для выделения строки меню необходимо использовать значение MF_HILITE. Для отмены выделения строки меню укажите значение MF_UNHILITE.

Если в параметре fuHilite указан флаг MF_BYCOMMAND, параметр idItem определяет идентификатор строки меню, для которого выполняется операция выделения или отмены выделения. Если указан флаг MF_BYPOSITION, параметр idItem определяет порядковый номер этой строки.

Получение информации

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

Идентификатор меню

С помощью функции GetMenu вы можете определить идентификатор меню, связанного с окном:

HMENU WINAPI GetMenu(HWND hwnd);

Идентификатор окна задается при помощи параметра hwnd.

Функция возвращает идентификатор меню или NULL, если окно не имеет меню. Дочернее окно не может иметь меню, однако в документации к SDK говорится, что если вы вызовете данную функцию для дочернего окна, возвращенное значение будет неопределено.



Поделиться:


Последнее изменение этой страницы: 2017-02-07; просмотров: 142; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.142.135.86 (0.005 с.)