当前位置:  开发笔记 > 编程语言 > 正文

禁用/启用MFC功能包的功能区按钮

如何解决《禁用/启用MFC功能包的功能区按钮》经验,为你挑选了1个好方法。

我正在使用MFC功能包,我在功能区栏上有一些按钮,CMFCRibbonButton的实例.问题是我想在某些条件下启用和禁用其中一些,但是在运行时.我怎样才能做到这一点?因为没有具体的方法...我听说解决方案是在运行时附加/分离事件处理程序,但我不知道如何...



1> ChrisN..:

创建CMFCRibbonButton对象时,必须指定关联的命令ID(请参阅此处的CMFCRibbonButton构造函数的文档).然后使用类中的MFC中的常用命令更新机制来启用和禁用功能区按钮.CCmdUI

例如,如果您有一个其命令ID为的功能区按钮,ID_MYCOMMAND并且您希望在应用程序的视图类中处理此命令,则应将这些功能添加到该类中:

// MyView.h
class CMyView : public CView {
    // ...
    private:
        afx_msg void OnMyCommand();
        afx_msg void OnUpdateMyCommand(CCmdUI* pCmdUI);
        DECLARE_MESSAGE_MAP()
};

并在.cpp文件中实现它们:

// MyView.cpp
void CMyView::OnMyCommand() {
    // add command handler code.
}

void CMyView::OnUpdateMyCommand(CCmdUI* pCmdUI) {
    BOOL enable = ...; // set flag to enable or disable the command.
    pCmdUI->Enable(enable);
}

您还应该为该类的消息映射添加ON_COMMANDON_UPDATE_COMMAND_UI输入CMyView:

// MyView.cpp
BEGIN_MESSAGE_MAP(CMyView, CView)
    ON_COMMAND(ID_MYCOMMAND, &CMyView::OnMyCommand)
    ON_UPDATE_COMMAND_UI(ID_MYCOMMAND, &CMyView::OnUpdateMyCommand)
END_MESSAGE_MAP()

有关MFC中消息映射的详细信息,请参阅MSDN中的TN006:消息映射.

我希望这有帮助!

推荐阅读
小妖694_807
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有