CCmdUI 类

仅在 CCmdTarget 派生类的 ON_UPDATE_COMMAND_UI 处理程序中使用。

语法

class CCmdUI

成员

公共方法

名称 描述
CCmdUI::ContinueRouting 告诉命令路由机制继续沿处理程序链路由当前消息。
CCmdUI::Enable 启用或禁用此命令的用户界面项。
CCmdUI::SetCheck 设置此命令的用户界面项的检查状态。
CCmdUI::SetRadio 类似于 SetCheck 成员函数,但作用于单选组。
CCmdUI::SetText 设置此命令的用户界面项的文本。

公共数据成员

“属性” 描述
CCmdUI::m_nID 用户界面对象的 ID。
CCmdUI::m_nIndex 用户界面对象的索引。
CCmdUI::m_pMenu 指向由 CCmdUI 对象表示的菜单。
CCmdUI::m_pOther 指向发送通知的窗口对象。
CCmdUI::m_pSubMenu 指向由 CCmdUI 对象表示的包含的子菜单。

备注

CCmdUI 没有基类。

当应用程序的用户下拉菜单时,每个菜单项都需要知道它应该显示为启用还是禁用。 菜单命令的目标通过实现 ON_UPDATE_COMMAND_UI 处理程序来提供此信息。 对于应用程序中的每个命令用户界面对象,请使用类向导或“属性”窗口(在类视图中)为每个处理程序创建消息映射条目和函数原型

下拉菜单后,框架会搜索并调用每个 ON_UPDATE_COMMAND_UI 处理程序,每个处理程序都会调用 CCmdUI 成员函数(例如 EnableCheck),然后框架相应地显示每个菜单项。

菜单项可以替换为控件栏按钮或其他命令用户界面对象,而无需更改 ON_UPDATE_COMMAND_UI 处理程序中的代码。

下表总结了 CCmdUI 的成员函数对各种命令用户界面项的影响。

用户界面项 启用 SetCheck SetRadio SetRadio
菜单项 启用或禁用 选中或取消选中 使用点进行检查 设置项文本
工具栏按钮 启用或禁用 选择、取消选择或不确定 SetCheck 相同 (ぃ続ノ)
状态栏窗格 使文本可见或不可见 设置弹出边框或普通边框 SetCheck 相同 设置窗格文本
CDialogBar 中的普通按钮 启用或禁用 选中或取消选中复选框 SetCheck 相同 设置按钮文本
CDialogBar 中的普通控件 启用或禁用 (ぃ続ノ) (ぃ続ノ) 设置窗口文本

有关使用此类的详细信息,请参阅如何更新用户界面对象

继承层次结构

CCmdUI

要求

标头:afxwin.h

CCmdUI::ContinueRouting

调用此成员函数,以告诉命令路由机制继续沿着处理程序链路由当前消息。

void ContinueRouting();

注解

这是一个高级成员函数,应该与返回 FALSE 的 ON_COMMAND_EX 处理程序结合使用。 有关详细信息,请参阅技术说明 6

CCmdUI::Enable

调用此成员函数以启用或禁用此命令的用户界面项。

virtual void Enable(BOOL bOn = TRUE);

参数

bOn
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 对象表示的其他用户界面对象的 ID。

UINT m_nID;

CCmdUI::m_nIndex

菜单项、工具栏按钮或由 CCmdUI 对象表示的其他用户界面对象的索引。

UINT m_nIndex;

CCmdUI::m_pMenu

指向由 CCmdUI 对象表示的菜单的指针(CMenu 类型)。

CMenu* m_pMenu;

备注

如果项不是菜单,则为 NULL。

CCmdUI::m_pSubMenu

指向由 CCmdUI 对象表示的包含的子菜单(CMenu 类型)。

CMenu* m_pSubMenu;

备注

如果项不是菜单,则为 NULL。 如果子菜单是弹出式菜单,则 m_nID 包含弹出式菜单中第一项的 ID。 有关详细信息,请参阅技术说明 21

CCmdUI::m_pOther

指向发送通知的窗口对象的指针(CWnd类型),例如工具或状态栏。

CWnd* m_pOther;

备注

如果项是菜单或非 CWnd 对象,则为 NULL。

CCmdUI::SetCheck

调用此成员函数,将此命令的用户界面项设置为适当的检查状态。

virtual void SetCheck(int nCheck = 1);

参数

nCheck
指定要设置的检查状态。 如果为 0,则取消选中;如果为 1,则选中;如果为 2,则设置为不确定。

注解

此成员函数适用于菜单项和工具栏按钮。 不确定状态仅适用于工具栏按钮。

CCmdUI::SetRadio

调用此成员函数,将此命令的用户界面项设置为适当的检查状态。

virtual void SetRadio(BOOL bOn = TRUE);

参数

bOn
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);
}

另请参阅

MFC 示例 MDI
层次结构图
CCmdTarget 类