Узнайте, какие цвета используются при использовании пакета функций MFC в стиле Office 2007

Я обновляю часть нашего устаревшего кода C++, чтобы использовать «пакет функций MFC», который Microsoft выпустила для Visual Studio 2008. Мы использовали новые классы для получения нашего приложения от CFrameWndEx и применяем стили Office 2007, чтобы дать нашим приложение более современный внешний вид. Это дает нам градиентно заполненные заголовки окон, строки состояния и т. Д., А также использование панелей инструментов ленты.

Однако наше приложение содержит некоторые элементы управления, нарисованные владельцем, и я хотел бы обновить их, чтобы они соответствовали цветовой схеме, используемой пакетом функций. В идеале я хотел бы знать, какие светлые и затемненные цвета панели инструментов используются в настоящее время.

Я просмотрел документацию и Интернет, но пока ничего не нашел. Кто-нибудь знает, как узнать эту информацию?

[Редактировать]

В частности, нам нужно выяснить, какие цвета используются во время выполнения. Вы можете изменить внешний вид своего приложения во время выполнения, используя новую статическую функцию CMFCVisualManager :: SetDefaultManager.

На следующей странице msdn показано, какие стили доступны, в частности внешний вид Office2007: ссылка на msdn

Ответов (9)

Решение

Вы смотрели исходный код MFC, который вы найдете в чем-то вроде

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

Похоже, CMFCVisualManager предлагает несколько методов для получения информации о цвете, например

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

Взгляните на документы MSDN для CMFCVisualManager.

«Думаю, вы могли бы использовать свой любимый редактор изображений и выбирать цвета из снимка экрана».

По сути, это то, что я делаю сейчас, и я определил список констант, из которых я беру цвета. Хотя это не выглядит очень элегантно!

Вы пробовали: Документ системы Office 2007: Руководство по стилю пользовательского интерфейса для решений и надстроек ?

Думаю, вы могли бы использовать свой любимый редактор изображений и выбирать цвета из снимка экрана.

@GateKiller, OP не разрабатывает надстройку Office 2007, поэтому рекомендации по пользовательскому интерфейсу не помогут. Это приложение MFC, использующее пакет дополнительных компонентов Visual C++ 2008, который позволяет приложениям 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 при рисовании собственного фона панели управления.

(обратите внимание, что я не нахожусь перед своим рабочим ПК, поэтому приведенный выше синтаксис не подходит.)