我正在更新一些旧的C ++代码,以使用Microsoft为Visual Studio 2008发布的“MFC功能包”。我们使用新类从CFrameWndEx派生我们的应用程序,并应用Office 2007样式使我们的应用程序更现代化。这为我们提供了渐变填充窗口标题,状态栏等,以及使用功能区工具栏。
但是,我们的应用程序包含一些所有者绘制的控件,我想更新它们以匹配功能包使用的颜色方案。理想情况下,我想知道当前使用的浅色和阴影工具栏颜色。
我已经围绕文档和网络进行了搜索,但还没有找到任何内容。有谁知道如何找到这些信息?
[编辑]
特别是我们需要找出运行时使用的颜色。您可以使用新的静态函数CMFCVisualManager :: SetDefaultManager在运行时更改应用程序的外观。
以下msdn页面显示了可用的样式,特别是Office2007外观: link to msdn
答案 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()方法进行一些屏蔽。