Класс CCmdUI
Используется только в обработчике ON_UPDATE_COMMAND_UI
в производном CCmdTarget
классе.
Синтаксис
class CCmdUI
Участники
Открытые методы
Имя | Описание |
---|---|
CCmdUI::ContinueRouting | Указывает механизму маршрутизации команд продолжить маршрутизацию текущего сообщения вниз по цепочке обработчиков. |
CCmdUI::Enable | Включает или отключает элемент пользовательского интерфейса для этой команды. |
CCmdUI::SetCheck | Задает состояние проверки элемента пользовательского интерфейса для этой команды. |
CCmdUI::SetRadio | SetCheck Как и функция-член, но работает на радиогруппах. |
CCmdUI::SetText | Задает текст для элемента пользовательского интерфейса для этой команды. |
Открытые члены данных
Имя | Описание |
---|---|
CCmdUI::m_nID | Идентификатор объекта пользовательского интерфейса. |
CCmdUI::m_nIndex | Индекс объекта пользовательского интерфейса. |
CCmdUI::m_pMenu | Указывает на меню, представленное CCmdUI объектом. |
CCmdUI::m_pOther | Указывает на объект окна, отправляющий уведомление. |
CCmdUI::m_pSubMenu | Указывает на содержащееся вложенное меню, представленное CCmdUI объектом. |
Замечания
CCmdUI
не имеет базового класса.
Когда пользователь приложения вытягивает меню, каждый пункт меню должен знать, следует ли отображать его как включенный или отключенный. Цель команды меню предоставляет эти сведения путем реализации обработчика ON_UPDATE_COMMAND_UI. Для каждого объекта пользовательского интерфейса команды в приложении используйте окно мастера классов или свойств (в представлении классов) для создания прототипа карты сообщений и функции для каждого обработчика.
Когда меню вытягивается, платформа ищет и вызывает каждый обработчик ON_UPDATE_COMMAND_UI, каждый обработчик вызывает CCmdUI
функции-члены, например Enable
и Check
платформу, а затем соответствующим образом отображает каждый элемент меню.
Элемент меню можно заменить кнопкой панели управления или другим объектом пользовательского интерфейса, не изменяя код в обработчике ON_UPDATE_COMMAND_UI
.
В следующей таблице перечислены функции-члены эффекта CCmdUI
для различных элементов пользовательского интерфейса команды.
Элемент пользовательского интерфейса | Включить | SetCheck | SetRadio | SetText |
---|---|---|---|---|
Пункт меню | Включает или отключает | Проверки или отмена флажка | Проверка с помощью точки | Задает текст элемента |
Кнопка на панели инструментов | Включает или отключает | Выбирает, отменяет выборку или неопределенную | То же, что SetCheck |
(Неприменимо) |
Панель состояния | Делает текст видимым или невидимым | Задает всплывающее окно или обычную границу | То же, что SetCheck |
Задает текст области |
Обычная кнопка в CDialogBar |
Включает или отключает | Флажок проверки или отмены флажка | То же, что SetCheck |
Задает текст кнопки |
Обычный элемент управления в CDialogBar |
Включает или отключает | (Неприменимо) | (Неприменимо) | Задает текст окна |
Дополнительные сведения об использовании этого класса см. в разделе "Обновление объектов пользовательского интерфейса".
Иерархия наследования
CCmdUI
Требования
Заголовок: afxwin.h
CCmdUI::ContinueRouting
Вызовите эту функцию-член, чтобы сообщить механизму маршрутизации команд, чтобы продолжить маршрутизацию текущего сообщения вниз по цепочке обработчиков.
void ContinueRouting();
Замечания
Это расширенная функция-член, которая должна использоваться в сочетании с обработчиком ON_COMMAND_EX, возвращающим значение FALSE. Дополнительные сведения см . в техническом примечание 6.
CCmdUI::Enable
Вызовите эту функцию-член, чтобы включить или отключить элемент пользовательского интерфейса для этой команды.
virtual void Enable(BOOL bOn = TRUE);
Параметры
бон
ЗНАЧЕНИЕ TRUE, чтобы включить элемент, false, чтобы отключить его.
Пример
ON_UPDATE_COMMAND_UI(ID_FILE_SAVE, &CMyDoc::OnUpdateFileSave)
void CMyDoc::OnUpdateFileSave(CCmdUI *pCmdUI)
{
// Enable the menu item if the file has been modified.
pCmdUI->Enable(m_bModified);
}
CCmdUI::m_nID
Идентификатор элемента меню, кнопки панели инструментов или другого объекта пользовательского интерфейса, представленного CCmdUI
объектом.
UINT m_nID;
CCmdUI::m_nIndex
Индекс элемента меню, кнопки панели инструментов или другого объекта пользовательского интерфейса, представленного CCmdUI
объектом.
UINT m_nIndex;
CCmdUI::m_pMenu
Указатель ( CMenu
типа) на меню, представленное CCmdUI
объектом.
CMenu* m_pMenu;
Замечания
ЗНАЧЕНИЕ NULL, если элемент не является меню.
CCmdUI::m_pSubMenu
Указатель (типа CMenu
) на содержащееся вложенное меню, представленное CCmdUI
объектом.
CMenu* m_pSubMenu;
Замечания
ЗНАЧЕНИЕ NULL, если элемент не является меню. Если всплывающее меню представляет собой всплывающее меню, m_nID содержит идентификатор первого элемента во всплывающем меню. Дополнительные сведения см . в техническом примечание 21.
CCmdUI::m_pOther
Указатель (типа CWnd
) на объект окна, например средство или панель состояния, отправляющий уведомление.
CWnd* m_pOther;
Замечания
ЗНАЧЕНИЕ NULL, если элемент является меню или не-объект CWnd
.
CCmdUI::SetCheck
Вызовите эту функцию-член, чтобы задать элемент пользовательского интерфейса для этой команды соответствующим состоянием проверки.
virtual void SetCheck(int nCheck = 1);
Параметры
nCheck
Указывает состояние проверки, которое нужно задать. Если значение 0, снимите флажки; Значение , если значение 1, проверяется; и если 2, задает неопределенное значение.
Замечания
Эта функция-член работает для элементов меню и кнопок панели инструментов. Неопределенное состояние применяется только к кнопкам панели инструментов.
CCmdUI::SetRadio
Вызовите эту функцию-член, чтобы задать элемент пользовательского интерфейса для этой команды соответствующим состоянием проверки.
virtual void SetRadio(BOOL bOn = TRUE);
Параметры
бон
ЗНАЧЕНИЕ TRUE для включения элемента; в противном случае ЗНАЧЕНИЕ FALSE.
Замечания
Эта функция-член работает так SetCheck
, за исключением того, что она работает с элементами пользовательского интерфейса, действующими в составе радиогруппы. Отмена проверки других элементов в группе не является автоматической, если элементы сами не поддерживают поведение радиогруппы.
CCmdUI::SetText
Вызовите эту функцию-член, чтобы задать текст элемента пользовательского интерфейса для этой команды.
virtual void SetText(LPCTSTR lpszText);
Параметры
lpszText
Указатель на текстовую строку.
Пример
void CMyRichEditView::OnUpdateLineNumber(CCmdUI *pCmdUI)
{
int nLine = GetRichEditCtrl().LineFromChar(-1) + 1;
CString string;
string.Format(_T("Line %d"), nLine);
pCmdUI->Enable(TRUE);
pCmdUI->SetText(string);
}