AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Standard-Fensterfarbe bei WinAPI-Fenstern?
Thema durchsuchen
Ansicht
Themen-Optionen

Standard-Fensterfarbe bei WinAPI-Fenstern?

Ein Thema von CalganX · begonnen am 5. Aug 2004 · letzter Beitrag vom 5. Aug 2004
Antwort Antwort
CalganX

Registriert seit: 21. Jul 2002
Ort: Bonn
5.403 Beiträge
 
Turbo Delphi für Win32
 
#1

Standard-Fensterfarbe bei WinAPI-Fenstern?

  Alt 5. Aug 2004, 16:53
Hi,
noch ein kleines Farbproblem: was bitte ist die aus der VCL bekannte Farbe clBtnFace in der WinAPI?
Luckie schreibt in seinem Tutorial COLOR_APPWORKSPACE allerdings ist das nicht wirklich die Standardfarbe, sondern ein recht dunkles grau. Ich habe vorrübergehend COLOR_APPWORKSPACE+1 genommen, aber das ist es auch nur fast.
Naheliegend wäre ja eigentlich COLOR_BTNFACE, aber das ist bei mir weiß (also die richtige Farbe der Buttons, aber das ist <> clBtnFace).

Chris
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#2

Re: Standard-Fensterfarbe bei WinAPI-Fenstern?

  Alt 5. Aug 2004, 16:58
Also bei mir unter 2000 tut es das COLOR_APPWORKSPACE. Und in der aktuellen Version hat Mathias das für XP ergänzt:
Zitat:
Hinweis für Windows XP
Wie Ihnen das Bild links zeigt, wird unter Windows XP der Fensterhintergrund evtl. zu dunkel dargestellt. Das liegt an der Verwendung von COLOR_APPWORKSPACE (wie eingangs gezeigt) bei aktiven Themes. Als Abhilfe sollten Sie mit der Funktion "GetSysColorBrush" die Farbe für 3D-Elemente laden und benutzen:
wc.hbrBackground := GetSysColorBrush(COLOR_3DFACE);


Wie Sie im Bild rechts sehen können, wird dann der Hintergrund korrekt dargestellt:

*

Sie können diesen Befehl auch verwenden, wenn Sie keine Themes aktiviert haben bzw. ein anderes Betriebssystem als Windows XP benutzen (9x, ME, NT und 2000). Eine Übersicht über die möglichen Farbwerte finden Sie unter dem Befehl "GetSysColor" im PSDK.
Der Unterschied zwischen beiden Befehlen ist, dass "GetSysColorBrush" die gewünschte Farbe gleich als so genannten Brush zurückliefert, der sofort mit der Membervariablen hbrBackground (s. TWndClassEx-Record) benutzt werden kann. Dagegen müssten Sie das Ergebnis von "GetSysColor" (ein dword-Wert mit den RGB-Informationen der Farbe) erst bspw. mit "CreateSolidBrush" umwandeln, um ihn für den Fensterhintergrund nutzen zu können.
Nicht umsonst ist bei den Demos noch das Tutorial dabei.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
CalganX

Registriert seit: 21. Jul 2002
Ort: Bonn
5.403 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: Standard-Fensterfarbe bei WinAPI-Fenstern?

  Alt 5. Aug 2004, 17:01
Hi,
danke dir Luckie. Funktioniert einwandfrei, was auch sonst?

Allerdings habe ich die Demos nicht mal installiert.

Chris
  Mit Zitat antworten Zitat
MathiasSimmack
(Gast)

n/a Beiträge
 
#4

Re: Standard-Fensterfarbe bei WinAPI-Fenstern?

  Alt 5. Aug 2004, 17:04
Zitat von Luckie:
Also bei mir unter 2000 tut es das COLOR_APPWORKSPACE.
Ja, aber wie gesagt: Wenn du dein Win2000-Programm dann unter XP laufen lässt, hast du das gleiche Farbproblem. Deswegen ja auch die Ergänzung.

Und nun noch einen kleinen Strich für den Luckie:
Generell gilt: Alles in den Tutorials, das irgendwie mit Windows XP zu tun, ist von mir - mir - mir; weil: Luckie hat gar kein XP.
  Mit Zitat antworten Zitat
Benutzerbild von mirage228
mirage228

Registriert seit: 23. Mär 2003
Ort: Münster
3.750 Beiträge
 
Delphi 2010 Professional
 
#5

Re: Standard-Fensterfarbe bei WinAPI-Fenstern?

  Alt 5. Aug 2004, 17:41
Hi,

in einem nonVCL Programm von mir, habe ich einfach

COLOR_BACKGROUND + 15; // = clBtnFace verwendet. Das ist zwar nicht sehr schön, funktioniert aber.

mfG
mirage228
David F.

May the source be with you, stranger.
PHP Inspection Unit (Delphi-Unit zum Analysieren von PHP Code)
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#6

Re: Standard-Fensterfarbe bei WinAPI-Fenstern?

  Alt 5. Aug 2004, 17:43
Und warum gibstdu dann nicht gleich COLOR_BTNFACE an? das dürfte clBtnFace entsprechen. Und damit wären wir wieder bei obigen Problem.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
MathiasSimmack
(Gast)

n/a Beiträge
 
#7

Re: Standard-Fensterfarbe bei WinAPI-Fenstern?

  Alt 5. Aug 2004, 20:05
Ja, das ist sehr umständlich, @mirage. Im PSDK stehen COLOR_3DFACE und COLOR_BTNFACE in der gleichen Zeile, s. [msdn]"GetSysColor"[/msdn], also bezeichnen sie auch den selben Farbwert.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:27 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz