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

时间:2008-08-12 12:33:11

标签: colors mfc-feature-pack

我正在更新一些旧的C ++代码,以使用Microsoft为Visual Studio 2008发布的“MFC功能包”。我们使用新类从CFrameWndEx派生我们的应用程序,并应用Office 2007样式使我们的应用程序更现代化。这为我们提供了渐变填充窗口标题,状态栏等,以及使用功能区工具栏。

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

我已经围绕文档和网络进行了搜索,但还没有找到任何内容。有谁知道如何找到这些信息?

[编辑]

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

以下msdn页面显示了可用的样式,特别是Office2007外观: link to msdn

9 个答案:

答案 0 :(得分:1)

您是否查看了MFC源代码,您可以在

中找到它

C:\ Program Files \ Microsoft Visual Studio 9.0 \ VC \ atlmfc \ src \ mfc

答案 1 :(得分:1)

  

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

     

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

     

查看CMFCVisualManager的MSDN文档。

很好的建议,但遗憾的是他们只返回各种灰度,当前我正在使用样式CMFCVisualManagerOffice2007 :: Office2007_LunaBlue

运行我的应用程序

令人讨厌的msdn帮助是“正在建设中”,所以甚至没有告诉你他们应该做什么!

答案 2 :(得分:1)

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

(请注意,我不在我的工作PC前面,因此上面的语法不会出现。)

答案 3 :(得分:0)

答案 4 :(得分:0)

我猜你可以使用自己喜欢的图像编辑器从屏幕抓取中选择颜色。

答案 5 :(得分:0)

“我想你可以使用自己喜欢的图像编辑器从屏幕抓取中选择颜色。”

这基本上就是我现在正在做的事情,我已经定义了一个常量列表,我可以从中提取颜色。虽然看起来不是很优雅!

答案 6 :(得分:0)

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

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

查看CMFCVisualManager的MSDN文档。

答案 7 :(得分:0)

@GateKiller,OP没有开发Office 2007加载项,因此UI指南并没有真正帮助。这是一个使用Visual C++ 2008 Feature Pack的MFC应用程序,它允许MFC应用程序采用Office 2007的外观。

答案 8 :(得分:0)

  

很好的建议,但遗憾的是他们只返回各种灰度,当前我正在使用样式CMFCVisualManagerOffice2007 :: Office2007_LunaBlue

运行我的应用程序

CMFCVisualManagerOffice2007 :: GetTabFrameColors - clrFace输出参数是灰色的吗?

也许他们在每个主题的基础色调上都是所有面具?假设您可以使用CMFCVisualManagerOffice2007 :: GetStyle()确定哪种配色方案有效,或许您可以弄清楚该色调是什么,然后使用GetxxxColor()方法进行一些屏蔽。