MFC CMFCVisualManager覆盖

时间:2015-09-25 20:55:40

标签: c++ mfc

我试图覆盖CMFCVisualManager上的某些功能来自定义我的功能区。所以我创建了一个类并从中派生出来。

void CMyVisualManager::OnDrawRibbonCategory(CDC* pDC, CMFCRibbonCategory* pCategory, CRect rectCategory)

现在这可以改变颜色等,但是有些功能我不能或不能正确地做到这一点

void CMyVisualManager::OnDrawRibbonLaunchButton(CDC* pDC, CMFCRibbonLaunchButton* pButton, CMFCRibbonPanel* pPanel)

我的方法不会覆盖原始方法,而原始函数会被调用

但是https://msdn.microsoft.com/en-us/subscriptions/downloads/65a24718-8128-43f9-973d-25262bdceae7(v=vs.90) 说它可以被覆盖。

如果有人能指出我正确的方向,我一直在寻找,但无法找到答案,谢谢

1 个答案:

答案 0 :(得分:0)

是的,您覆盖了班级中的某个功能。

但是您的可视化管理器不是创建的那个。所以它永远不会被使用。 程序启动时,会创建可视化管理器的实例。并且使用了这个实例。

仅当您还强制MFC使用可视化管理器时,才会使用覆盖功能。

在程序的InitInstance中使用SetDefaultManager与您的类的运行时类。