我正在使用 MFC 功能包,并且功能区栏上有一些按钮,即 CMFCRibbonButton 的实例。问题是我想在某些条件下启用和禁用其中一些,但在运行时。我怎样才能做到这一点?因为没有具体的方法...我听说解决方案是在运行时附加/分离事件处理程序,但我不知道如何...
当您创建CMFCRibbonButton
对象,您必须指定关联的命令 ID(请参阅文档CMFCRibbonButton
构造函数here http://msdn.microsoft.com/en-us/library/bb982247.aspx)。然后使用 MFC 中常用的命令更新机制来启用和禁用功能区按钮,使用CCmdUI http://msdn.microsoft.com/en-us/library/6kc4d8fh.aspx class.
例如,如果您有一个功能区按钮,其命令 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
and ON_UPDATE_COMMAND_UI
消息映射的条目CMyView
class:
// 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 中消息映射的详细信息,请参阅TN006:消息映射 http://msdn.microsoft.com/en-us/library/0812b0wa.aspx在 MSDN 中。
我希望这有帮助!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)