了解以 Office 2007 样式使用 MFC 功能包时使用的颜色
-
08-06-2019 - |
题
我正在更新一些旧版 C++ 代码,以使用 Microsoft 为 Visual Studio 2008 发布的“MFC 功能包”。我们使用新的类从 CFrameWndEx 派生我们的应用程序,并应用 Office 2007 样式来为我们的应用程序提供更现代的外观。这为我们提供了渐变填充的窗口标题、状态栏等,以及功能区工具栏的使用。
但是,我们的应用程序包含一些所有者绘制的控件,我想更新这些控件以匹配功能包使用的配色方案。理想情况下,我想知道当前使用的浅色和阴影工具栏颜色。
我已经搜索了文档和网络,但还没有找到任何东西。有谁知道如何找到这些信息吗?
[编辑]
特别是我们需要找出运行时使用的颜色。您可以使用新的静态函数 CMFCVisualManager::SetDefaultManager 在运行时更改应用程序的外观。
下面的 msdn 页面向您展示了可用的样式类型,特别是 Office2007 的外观:链接到 msdn
解决方案
您是否查看过 MFC 源代码,您会发现类似的内容
C:\Program Files\Microsoft Visual Studio 9.0\VC\atlmfc\src\mfc
其他提示
看起来 CMFCVisualManager 提供了几种获取颜色信息的方法,例如
cmfcvisualmanager :: getSmartDockingBaseGuideColors()cmfcvisualmanager :: getToolBarhighlighlightColor()
查看 CMFCVisualManager 的 MSDN 文档。
很好的建议,但不幸的是,当我当前使用 CMFCVisualManagerOffice2007::Office2007_LunaBlue 样式运行应用程序时,它们只是返回各种灰色阴影
令人烦恼的是,msdn 帮助“正在建设中”,因此甚至没有告诉您他们应该做什么!
afxGlobalData
包含有关 MFC 功能包当前使用的颜色、画笔和字体的一些有用信息。特别是我使用 afxGlobalData.m_clrBarFace
当绘制我自己的控制栏背景时。
(请注意,我不在我的工作电脑前,所以上面的语法不正确。)
你有没有尝试过: 2007年办公系统文件:解决方案和插件的 UI 风格指南 ?
我想您可以使用您最喜欢的图像编辑器并从屏幕抓取中选择颜色。
“我想你可以使用你最喜欢的图像编辑器并从屏幕抓取中选择颜色。”
这基本上就是我现在正在做的事情,我定义了一个常量列表,从中提取颜色。虽然看起来不太优雅!
看起来 CMFCVisualManager 提供了几种获取颜色信息的方法,例如
CMFCVisualManager::GetSmartDockingBaseGuideColors()
CMFCVisualManager::GetToolbarHighlightColor()
查看 CMFCVisualManager 的 MSDN 文档。
@GateKiller,OP 并未开发 Office 2007 加载项,因此 UI 指南不会真正有帮助。这是一个 MFC 应用程序,使用 Visual C++ 2008 功能包 它允许 MFC 应用程序呈现 Office 2007 的外观和感觉。
很好的建议,但不幸的是,当我当前使用 CMFCVisualManagerOffice2007::Office2007_LunaBlue 样式运行应用程序时,它们只是返回各种灰色阴影
CMFCVisualManagerOffice2007::GetTabFrameColors - clrFace 输出参数是灰色的?
也许它们都是每个主题的单一基本色调之上的面具?假设您可以使用 CMFCVisualManagerOffice2007::GetStyle() 确定哪种配色方案有效,也许您可以找出该色调是什么,然后使用 GetxxxColor() 方法进行一些屏蔽。