2016-12-22 24 views
-2

Ich verwende clrTextBk für die Hintergrundfarbe festlegen. Aber Windows-System haben viele Themen mit verschiedenen Standard-Hintergrundfarben. In Beispiel verwendet Windows XP Theme Farbe # 316ac5, klassische Theme verwenden Farbe, wie COLOR_HOTLIGHT, # 0a246a, und viele andere Farbe, die als clrTextBk verwendet. Ich kann GetSysColor mit param COLOR_BACKGROUND oder COLOR_DESKTOP versuchen, aber diese Farben sind kein Standard für clrTextBk. Wie bekomme ich Standard Hintergrundfarbe (clrTextBk) für das aktuelle Thema?WinApi - Get Standard-Hintergrundfarbe

+0

Sie müssten das Thema api –

+0

Vielen Dank. Ich versuche 'OpenThemeData (hMainWnd, PWideChar ('TEXTSTYLE'))' zu verwenden, aber das gibt Fehler: ** SIGSEGV **. –

+0

Wie hat das überhaupt kompiliert? Sie können nicht mehr als ein tatsächliches Zeichen in einer Zeichenkonstante haben. Plus, das ist nicht einmal eine breite Zeichenfolge! Wie auch immer, ich bin mir nicht sicher, was deine Situation ist. Auf welcher Art von Oberfläche möchtest du malen? Eine Registerkarte? Der Nicht-Kundenbereich? Etwas anderes? Wenn du einen Screenshot erstellen könntest, würde das helfen. Sprechen Sie auch über Texthintergrundfarbe oder irgendeine andere Hintergrundfarbe? Die Standarddialog-Hintergrundfarbe ist 'COLOR_BTNFACE', auch wenn Theming aktiviert ist, aber Sie sollten sich darüber keine Gedanken machen müssen, je nachdem, was Sie gerade tun ... – andlabs

Antwort

0

Antwort (danke Cody Grau und Andlabs):

clrTextBk is a field of NMLVCUSTOMDRAW

und ich brauchte Verwendung GetSysColor(COLOR_HIGHLIGHT), um Standard-Hintergrundfarbe des ausgewählten Textes zu erhalten.