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

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

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

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

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

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

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


person John Sibly    schedule 12.08.2008    source источник


Ответы (9)


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

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

person Will Dean    schedule 12.08.2008

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

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

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

Хорошее предложение, но, к сожалению, они просто возвращают различные оттенки серого, когда в настоящее время я запускаю свое приложение со стилем CMFCVisualManagerOffice2007 :: Office2007_LunaBlue

К сожалению, справка msdn находится в стадии разработки, поэтому даже не сообщает вам, что они должны делать!

person John Sibly    schedule 15.08.2008

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

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

person Rob    schedule 14.10.2008


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

person GateKiller    schedule 12.08.2008

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

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

person John Sibly    schedule 13.08.2008

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

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

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

person Aidan Ryan    schedule 13.08.2008

@GateKiller, OP не разрабатывает надстройку Office 2007, поэтому рекомендации по пользовательскому интерфейсу не помогут. Это приложение MFC, использующее Visual C ++ 2008 Feature Pack, который позволяет приложениям MFC иметь внешний вид Office 2007.

person Aidan Ryan    schedule 13.08.2008

Хорошее предложение, но, к сожалению, они просто возвращают различные оттенки серого, когда в настоящее время я запускаю свое приложение со стилем CMFCVisualManagerOffice2007 :: Office2007_LunaBlue

CMFCVisualManagerOffice2007 :: GetTabFrameColors - выходной параметр clrFace серый?

Возможно, они все маски на основе одного базового оттенка для каждой темы? Предполагая, что вы можете определить, какая цветовая схема действует с помощью CMFCVisualManagerOffice2007 :: GetStyle (), возможно, вы сможете выяснить, что это за оттенок, а затем выполнить некоторую маскировку с помощью методов GetxxxColor ().

person Aidan Ryan    schedule 18.08.2008