- Syntax
- Members
- Remarks
- Inheritance Hierarchy
- Requirements
- CCmdUI::ContinueRouting
- CCmdUI::Enable
- CCmdUI::m_nID
- CCmdUI::m_nIndex
- CCmdUI::m_pMenu
- CCmdUI::m_pSubMenu
- CCmdUI::m_pOther
- CCmdUI::SetCheck
- CCmdUI::SetRadio
- CCmdUI::SetText
- See also
仅在CCmdTarget派生类中的ON_UPDATE_COMMAND_UI处理程序中使用。
成员
公共方法
名称 | 说明 |
---|---|
CCmdUI::ContinueRouting | 告诉命令路由机制继续将当前消息路由到处理程序链中。 |
CCmdUI::Enable | 启用或禁用此命令的用户界面项。 |
CCmdUI::SetCheck | 设置此命令的用户界面项的检查状态。 |
CCmdUI::SetRadio | 与成员SetCheck 函数一样,但在无线电组上运行。 |
CCmdUI::SetText | 设置此命令的用户界面项的文本。 |
公共数据成员
名称 | 说明 |
---|---|
CCmdUI::m_nID | 用户界面对象的 ID。 |
CCmdUI::m_nIndex | 用户界面对象的索引。 |
CmDUI::m_pMenu | 指向对象表示的CCmdUI 菜单。 |
CmDUI::m_pOther | 指向发送通知的窗口对象。 |
CmdUI::m_pSubMenu | 指向由对象表示的CCmdUI 包含的子菜单。 |
备注
CCmdUI
没有基类。
当应用程序的用户拉下菜单时,每个菜单项需要知道它是应该显示为已启用还是禁用。 菜单命令的目标通过实现ON_UPDATE_COMMAND_UI处理程序来提供此信息。 对于应用程序中的每个命令用户界面对象,请使用类向导或属性窗口(类视图中)为每个处理程序创建消息映射条目和函数原型。
当菜单拉下时,框架搜索并调用每个ON_UPDATE_COMMAND_UI处理程序,每个处理程序调用CCmdUI
成员函数,如Enable
和Check
,然后框架适当地显示每个菜单项。
菜单项可以替换为控制栏按钮或其他命令用户界面对象,而无需更改处理程序中ON_UPDATE_COMMAND_UI
的代码。
下表总结了成员函数对各种命令CCmdUI
用户界面项的影响。
用户界面项目 | Enable | SetCheck | SetRadio | SetText |
---|---|---|---|---|
菜单项 | 启用或禁用 | 检查或取消检查 | 使用点进行检查 | 设置项目文本 |
工具栏按钮 | 启用或禁用 | 选择、取消选择或不确定 | 与 SetCheck 相同 | (不适用) |
状态栏窗格 | 使文本可见或不可见 | 设置弹出边框或正常边框 | 与 SetCheck 相同 | 设置窗格文本 |
CDialogBar上的普通按钮 | 启用或禁用 | 选中或取消选中复选框 | 与 SetCheck 相同 | 设置按钮文本 |
CDialogBar上的普通控件 | 启用或禁用 | (不适用) | (不适用) | 设置窗口文本 |
继承层次结构
CCmdUI
要求
标头: afxwin.h
CCmdUI::ContinueRouting
调用此成员函数告诉命令路由机制继续将当前消息路由到处理程序链中。
void ContinueRouting();
备注
这是一个高级成员函数,应与返回 FALSE 的ON_COMMAND_EX处理程序结合使用。
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
指向对象表示CMenu
的菜单的CCmdUI
指针(类型)。
CMenu* m_pMenu;
备注
如果项目不是菜单,则为 NULL。
CCmdUI::m_pSubMenu
指向由对象CMenu
表示的包含子菜单的CCmdUI
指针(类型)。
CMenu* m_pSubMenu;
备注
如果项目不是菜单,则为 NULL。 如果子菜单是弹出窗口 ,m_nID包含弹出式菜单中第一项的 ID。
CmDUI::m_pOther
指向窗口对象的指针CWnd
(类型 )(如工具或状态栏)发送通知。
CWnd* m_pOther;
备注
如果项目是菜单或非CWnd
对象,则 NULL。
CCmdUI::SetCheck
调用此成员函数以将此命令的用户界面项设置为相应的检查状态。
virtual void SetCheck(int nCheck = 1);
参数
nCheck
指定要设置的检查状态。 如果为 0,则取消选中;如果为 0,则取消选中。如果为 1,则进行检查;如果为 2,则设置不确定。
备注
此成员函数适用于菜单项和工具栏按钮。 不确定状态仅适用于工具栏按钮。
CmdUI::SetRadio
调用此成员函数以将此命令的用户界面项设置为相应的检查状态。
virtual void SetRadio(BOOL bOn = TRUE);
参数
bOn
TRUE 以启用项目;否则 FALSE。
备注
此成员函数的操作方式SetCheck
与 类似,只不过它操作作为无线电组的一部分的用户界面项。 除非项本身维护无线电组行为,否则取消选中组中的其他项不是自动的。
CCmdUI::SetText
调用此成员函数以设置此命令的用户界面项的文本。
virtual void SetText(LPCTSTR lpszText);
参数
lpszText
指向文本字符串的指针。
示例
C++复制
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);
}