我正在使用MFC功能包,我在功能区栏上有一些按钮,CMFCRibbonButton的实例.问题是我想在某些条件下启用和禁用其中一些,但是在运行时.我怎样才能做到这一点?因为没有具体的方法...我听说解决方案是在运行时附加/分离事件处理程序,但我不知道如何...
创建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_COMMAND
和ON_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:消息映射.
我希望这有帮助!