Finden Sie heraus, welche Farben verwendet werden, wenn Sie das MFC Feature Pack im Office 2007-Stil verwenden

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

  •  08-06-2019
  •  | 
  •  

Frage

Ich aktualisiere einen Teil unseres alten C++-Codes, um das „MFC Feature Pack“ zu verwenden, das Microsoft für Visual Studio 2008 veröffentlicht hat.Wir haben die neuen Klassen verwendet, um unsere Anwendung von CFrameWndEx abzuleiten, und wenden die Office 2007-Stile an, um unserer Anwendung ein moderneres Aussehen zu verleihen.Dadurch erhalten wir mit Farbverläufen gefüllte Fenstertitel, Statusleisten usw. sowie die Verwendung der Multifunktionsleisten-Symbolleisten.

Allerdings enthält unsere Anwendung einige vom Eigentümer erstellte Steuerelemente, und ich möchte diese aktualisieren, damit sie dem vom Feature Pack verwendeten Farbschema entsprechen.Idealerweise würde ich gerne wissen, welche hellen und schattierten Symbolleistenfarben derzeit verwendet werden.

Ich habe mich in der Dokumentation und im Internet umgesehen und noch nichts gefunden.Weiß jemand, wie man diese Informationen herausfindet?

[Bearbeiten]

Insbesondere müssen wir herausfinden, welche Farben zur Laufzeit verwendet werden.Mit der neuen statischen Funktion CMFCVisualManager::SetDefaultManager können Sie das Erscheinungsbild Ihrer Anwendung zur Laufzeit ändern.

Die folgende MSDN-Seite zeigt Ihnen, welche Arten von Stilen verfügbar sind, insbesondere das Office2007-Erscheinungsbild:Link zu msdn

War es hilfreich?

Lösung

Haben Sie sich den MFC-Quellcode angesehen, den Sie in etwa finden?

C:\Programme\Microsoft Visual Studio 9.0\VC\atlmfc\src\mfc

Andere Tipps

Anscheinend bietet CMFCVisualManager mehrere Methoden zum Abrufen von Farbinformationen, z.

CMFCvisualManager :: GetmartDockingBaseGuideColors () cmfcvisualManager :: GetToolBarHighlightColor ()

Schauen Sie sich die MSDN-Dokumente für CMFCVisualManager an.

Guter Vorschlag, aber leider geben sie nur verschiedene Grautöne zurück, wenn ich derzeit meine Anwendung mit dem Stil CMFCVisualManagerOffice2007::Office2007_LunaBlue ausführe

Ärgerlicherweise ist die MSDN-Hilfe „im Aufbau“ und sagt Ihnen nicht einmal, was sie tun sollen!

afxGlobalData enthält einige nützliche Informationen zu den aktuellen Farben, Pinseln und Schriftarten, die vom MFC Feature Pack verwendet werden.Insbesondere verwende ich afxGlobalData.m_clrBarFace beim Malen meiner eigenen Steuerleisten-Hintergründe.

(Beachten Sie, dass ich nicht vor meinem Arbeits-PC sitze, daher ist die obige Syntax nicht genau.)

Ich denke, Sie könnten Ihren bevorzugten Bildeditor verwenden und die Farben aus einem Screenshot auswählen.

„Ich denke, Sie könnten Ihren bevorzugten Bildeditor verwenden und die Farben aus einem Screenshot auswählen.“

Das ist im Wesentlichen das, was ich gerade mache, und ich habe eine Liste von Konstanten definiert, aus denen ich die Farben herausziehe.Scheint allerdings nicht sehr elegant zu sein!

Anscheinend bietet CMFCVisualManager mehrere Methoden zum Abrufen von Farbinformationen, z.

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

Schauen Sie sich die MSDN-Dokumente für CMFCVisualManager an.

@GateKiller, das OP entwickelt kein Office 2007-Add-In, daher helfen die UI-Richtlinien nicht wirklich.Es handelt sich um eine MFC-Anwendung, die das verwendet Visual C++ 2008 Feature Pack Dadurch können MFC-Apps das Erscheinungsbild von Office 2007 annehmen.

Guter Vorschlag, aber leider geben sie nur verschiedene Grautöne zurück, wenn ich derzeit meine Anwendung mit dem Stil CMFCVisualManagerOffice2007::Office2007_LunaBlue ausführe

CMFCVisualManagerOffice2007::GetTabFrameColors – der clrFace-Ausgabeparameter ist grau?

Vielleicht sind es alles Masken auf einem einzigen Grundton für jedes Thema?Angenommen, Sie können mit CMFCVisualManagerOffice2007::GetStyle() bestimmen, welches Farbschema wirksam ist, können Sie vielleicht herausfinden, was dieser Farbton ist, und dann mit den GetxxxColor()-Methoden etwas maskieren.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top