Узнайте, какие цвета используются при использовании пакета функций MFC в стиле Office 2007.
-
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().