该应用程序默认使用 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
它并修复了错误。但它似乎并没有改变我的功能区栏的视觉风格。