Блокировка команд меню

Откройте ClassWizard и найдите в списке Object IDs строку ID_DEMO_GRAYED (рис. 14). Теперь свяжите с этим идентификатором метод-обработчик, но вместо знакомой строки COMMAND щелкните в списке Messages на строке UPDATE_COMMAND_UI, как показано на рис. 14. Сокращение UI означает «user interface», то есть «пользовательский интерфейс».

Рис. 14. Подключение метода обновления пользовательского интерфейса

В результате будет создан новый метод OnUpdateDemoGrayed():

void CFullmenusView::OnUpdateDemoGrayed(CCmdUI* pCmdUI)

{

// TODO: Add your command update UI handler code here

}

Этот метод будет вызываться программой перед отображением новой команды меню, и в нем можно заблокировать команду. Ему передается параметр pCmdUI, представляющий собой указатель на объект класса CCmdUI – методы этого класса перечислены в табл. 1

Таблица 1. Методы класса CCmdUI

Метод Назначение
ContinueRouting Сообщает механизму передачи команд о необходимости продолжить пересылку текущего сообщения по цепочке обработчиков
Enable Устанавливает или снимает блокировку элемента пользовательского интерфейса, соответствующего данной команде
SetCheck Устанавливает пометку для элемента пользовательского интерфейса, соответствующего данной команде
SetRadio Аналогичен методу SetCheck, но применяется для переключателей
SetText Задает текст для элемента пользовательского интерфейса, соответствующего данной команде

В этом методе заблокируем команду меню. Для этого следует вызвать метод Enable() объект CCmdUI, передав ему значение false:

void CFullmenusView::OnUpdateDemoGrayed(CCmdUI* pCmdUI)

{

pCmdUI->Enable(false);

}

Описанный способ позволяет блокировать отдельные команды меню и делать их недоступными для пользователя.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: