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

StackOverflow https://stackoverflow.com/questions/8761

  •  08-06-2019
  •  | 
  •  

Вопрос

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

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

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

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

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

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

Это было полезно?

Решение

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

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

Другие советы

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

CmfcvisualManager :: getSmartdockingbaseguidecolors () cmfcvisualManager :: getToolbarhighlightColor ()

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top