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
成员函数(例如 Enable
和 Check
),然后框架相应地显示每个菜单项。
菜单项可以替换为控件栏按钮或其他命令用户界面对象,而无需更改 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);
}