1

该应用程序默认使用 Windows 7 功能区样式:

CMFCVisualManager::SetDefaultManager(RUNTIME_CLASS(CMFCVisualManagerOffice2007));

我想创建一个新的视觉样式,我在其中实现了不同的颜色,所以我创建了CMyVisualStyle继承自CMFCVisualManagerOffice2007. 这是.h:

class CMyVisualStyle : public CMFCVisualManagerOffice2007
{
    DECLARE_DYNCREATE(CMyVisualStyle)
public:
    CMyVisualStyle();
    ~CMyVisualStyle();
    virtual COLORREF OnDrawRibbonPanel(CDC* pDC, CMFCRibbonPanel* pPanel, CRect rectPanel, CRect rectCaption);
    virtual void OnDrawRibbonCategory(CDC* pDC, CMFCRibbonCategory* pCategory, CRect rectCategory);

这是.cpp:

#include "stdafx.h"
#include "MyVisualStyle.h"

#define IMPLEMENT_DYNCREATE(CMyVisualStyle, CMFCVisualManagerOffice2007)
CMyVisualStyle::CMyVisualStyle()
{
}


CMyVisualStyle::~CMyVisualStyle()
{
}
COLORREF CMyVisualStyle::OnDrawRibbonPanel(CDC* pDC, CMFCRibbonPanel* pPanel, CRect rectPanel, CRect rectCaption)
{
CBrush br(RGB(0, 0, 255));
pDC->FillRect(rectPanel, &br);
return RGB(0, 255, 0);
}

void CMyVisualStyle::OnDrawRibbonCategory(CDC* pDC, CMFCRibbonCategory* pCategory, CRect rectCategory)
{
CBrush br(RGB(255, 0, 0));
pDC->FillRect(rectCategory, &br);
//return RGB(0, 255, 0);
}

我在 mainframe.cpp 中编辑了这个:

CMFCVisualManager::SetDefaultManager(RUNTIME_CLASS(CMyVisualStyle::GetThisClass()));
//CMFCVisualManager::SetDefaultManager(RUNTIME_CLASS(CMFCVisualManagerOffice2007));

但似乎RUNTIME_CLASS找不到我的类,错误:编译器错误 C2653 '标识符':不是类或命名空间名称语言语法在此处需要类、结构、联合或命名空间名称。

更新:我包括了MyVisualStyle.h它并修复了错误。但它似乎并没有改变我的功能区栏的视觉风格。

4

1 回答 1

1

只需使用

CMFCVisualManager::SetDefaultManager(RUNTIME_CLASS(CMyVisualStyle));
于 2019-11-28T14:31:07.977 回答