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

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

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

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

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

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

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

12.08.2008 12:33:10
9 ОТВЕТОВ
РЕШЕНИЕ

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

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

1
12.08.2008 13:14:00

Я полагаю, вы могли бы использовать ваш любимый графический редактор и выбрать цвета на экране.

0
12.08.2008 13:38:06

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

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

0
13.08.2008 12:27:42

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

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

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

0
13.08.2008 12:51:51

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

0
13.08.2008 12:56:29

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

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

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

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

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

1
15.08.2008 10:39:39

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

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

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

0
18.08.2008 16:25:44

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

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

1
14.10.2008 17:28:54