Узнайте, какие цвета используются при использовании пакета компонентов MFC в стиле Office 2007 - PullRequest
4 голосов
/ 12 августа 2008

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

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

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

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

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

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

Ответы [ 9 ]

1 голос
/ 12 августа 2008

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

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

1 голос
/ 14 октября 2008

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

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

1 голос
/ 15 августа 2008

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

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

Посмотрите документы MSDN для CMFCVisualManager.

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

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

0 голосов
/ 18 августа 2008

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

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

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

0 голосов
/ 13 августа 2008

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

0 голосов
/ 13 августа 2008

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

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

Посмотрите документы MSDN для CMFCVisualManager.

0 голосов
/ 13 августа 2008

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

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

0 голосов
/ 12 августа 2008

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

0 голосов
...