【问题标题】:Find out which colours are in use when using the MFC Feature pack in Office 2007 style找出在 Office 2007 样式中使用 MFC 功能包时使用的颜色
【发布时间】:2008-08-12 12:33:10
【问题描述】:

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

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

我搜索了文档和网络,但还没有找到任何东西。有谁知道如何找到这些信息?

[编辑]

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

下面的 msdn 页面向您展示了可用的样式,尤其是 Office2007 外观: link to msdn

【问题讨论】:

    标签: colors mfc-feature-pack


    【解决方案1】:

    您是否查看过 MFC 源代码,您会发现类似

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

    【讨论】:

      【解决方案2】:

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

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

      查看 CMFCVisualManager 的 MSDN 文档。

      很好的建议,但不幸的是,当我目前使用 CMFCVisualManagerOffice2007::Office2007_LunaBlue 样式运行我的应用程序时,它们只会返回各种灰色阴影

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

      【讨论】:

        【解决方案3】:

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

        (请注意,我不在我的工作 PC 前,所以上面的语法不是正确的。)

        【讨论】:

          【解决方案4】:
          【解决方案5】:

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

          【讨论】:

            【解决方案6】:

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

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

            【讨论】:

              【解决方案7】:

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

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

              查看 CMFCVisualManager 的 MSDN 文档。

              【讨论】:

                【解决方案8】:

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

                【讨论】:

                  【解决方案9】:

                  很好的建议,但不幸的是,当我目前使用 CMFCVisualManagerOffice2007::Office2007_LunaBlue 样式运行我的应用程序时,它们只会返回各种灰色阴影

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

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

                  【讨论】:

                    猜你喜欢
                    • 2014-09-05
                    • 2010-10-15
                    • 2011-06-27
                    • 1970-01-01
                    • 2010-10-22
                    • 2022-01-05
                    • 1970-01-01
                    • 1970-01-01
                    • 2020-09-04
                    相关资源
                    最近更新 更多