Блокировка команд меню
Откройте 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
В этом методе заблокируем команду меню. Для этого следует вызвать метод Enable() объект CCmdUI, передав ему значение false:
void CFullmenusView::OnUpdateDemoGrayed(CCmdUI* pCmdUI) { pCmdUI->Enable(false); }
Описанный способ позволяет блокировать отдельные команды меню и делать их недоступными для пользователя.
|