找出在Office 2007中使用MFC功能包时正在使用的颜色

问题描述:

我正在更新一些传统C++代码以使用Microsoft为Visual Studio 2008发布的“MFC功能包”。我们已经使用过从CFrameWndEx派生我们的应用程序的新类,并且正在应用Office 2007样式以使我们的应用程序具有更现代的外观。这给了我们梯度填充的窗口标题,状态栏等,并使用功能区工具栏。找出在Office 2007中使用MFC功能包时正在使用的颜色

但是,我们的应用程序包含一些所有者绘制的控件,我想更新这些以匹配功能包使用的颜色方案。理想情况下,我想知道当前正在使用的浅色和阴影工具栏颜色。

我已经围绕文档和网络寻找,还没有找到任何东西。有谁知道如何找到这些信息?

[编辑]

特别是,我们需要找出哪些正在运行时使用的颜色。您可以使用新的静态函数CMFCVisualManager :: SetDefaultManager在运行时更改应用程序的外观。

下面的MSDN页显示您什么样的款式可供选择,尤其是Office2007的样子: link to msdn

你有没有在MFC源代码,你会发现像

Ç看:\ Program Files文件\微软的Visual Studio 9.0 \ VC \ atlmfc的\ src \ MFC

我想你可以使用你最喜欢的图像编辑器,并从屏幕抓取颜色。

“我想你可以使用你最喜欢的图像编辑器,并从屏幕抓取颜色。”

这实际上是我目前正在做的,我已经定义了一个常量的列表,我从中抽出颜色。虽然看起来不太优雅!

看起来CMFCVisualManager提供了多种获取颜色信息的方法,例如,

CMFCVisualManager::GetSmartDockingBaseGuideColors() 
CMFCVisualManager::GetToolbarHighlightColor() 

查看CMFCVisualManager的MSDN文档。

@GateKiller,OP没有开发Office 2007加载项,所以UI准则不会真的有帮助。这是一个使用Visual C++ 2008 Feature Pack的MFC应用程序,它允许MFC应用程序采用Office 2007的外观。

看起来像CMFCVisualManager提供了几种获取颜色信息的方法,例如,

CMFCVisualManager :: GetSmartDockingBaseGuideColors() CMFCVisualManager :: GetToolbarHighlightColor()

看看MSDN文档的CMFCVisualManager。

很好的建议,但不幸的是,他们只是返回的灰色,当我目前运行我的风格的应用程序CMFCVisualManagerOffice2007 :: Office2007_LunaBlue

烦人MSDN帮助是“正在建设中”,所以没有按”各种色调甚至不会告诉你他们应该做什么!

很好的建议,但不幸的是,他们只是返回的灰色,当我目前运行我的风格CMFCVisualManagerOffice2007 :: Office2007_LunaBlue

CMFCVisualManagerOffice2007 :: GetTabFrameColors应用各种深浅 - 在CLRFACE输出参数是灰色?

也许他们都是在每个主题的单一基本色调顶部的面具?假设您可以使用CMFCVisualManagerOffice2007 :: GetStyle()确定哪种配色方案有效,也许可以找出该色调是什么,然后使用GetxxxColor()方法进行一些遮罩。

afxGlobalData包含有关MFC Feature Pack使用的当前颜色,画笔和字体的一些有用信息。当我绘制自己的控制栏背景时,我特别使用afxGlobalData.m_clrBarFace

(请注意,我不在我的工作电脑前,因此上述语法不适用于此)。