【MFC】CCmdUI类


                  

  1. Syntax
  2. Members
  3. Remarks
  4. Inheritance Hierarchy
  5. Requirements
  6. CCmdUI::ContinueRouting
  7. CCmdUI::Enable
  8. CCmdUI::m_nID
  9. CCmdUI::m_nIndex
  10. CCmdUI::m_pMenu
  11. CCmdUI::m_pSubMenu
  12. CCmdUI::m_pOther
  13. CCmdUI::SetCheck
  14. CCmdUI::SetRadio
  15. CCmdUI::SetText
  16. 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成员函数,如EnableCheck,然后框架适当地显示每个菜单项。

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

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

表 3
用户界面项目EnableSetCheckSetRadioSetText
菜单项启用或禁用检查或取消检查使用点进行检查设置项目文本
工具栏按钮启用或禁用选择、取消选择或不确定与 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);
}
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值