AfxRegisterWndClass und Hintergrundfarbe

Hallo Wissende,
wie kann ich bei AfxRegisterWndClass die Farbe für den Hintergrund (3. Parameter) ändern?
HBRUSH(COLOR_BTNFACE+1) usw. ist bekannt

Ich habe aber gelesen, daß man die Farbe auch mittels RGB(…,…,…) ändern können soll - nur WIE???

HBRUSH(RGB(255,255,0)) geht nicht (hat überhaupt keine Wirkung)
und mit mit CBrush habe ich rumprobiert und leider auch nichts erreicht

Wenn mir jemand helfen kann - Vielen Dank,
Thomas

Hallo!

Schreib an die Stelle des 3. Parameters einfach

( HBRUSH )CBrush( RGB( 255, 255, 0 ))

um bei Deinem Beispiel zu bleiben.

Grüße Safog

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo!

Schreib an die Stelle des 3. Parameters einfach

( HBRUSH )CBrush( RGB( 255, 255, 0 ))

um bei Deinem Beispiel zu bleiben.

Grüße Safog

Vielen Dank erst einmal (hatte vorher leider keine Zeit),
leider funktioniert das nicht - hatte ich nämlich auch schon vorher probiert.
In der Zwischenzeit habe ich es damit aufgegeben, muß es eben bei COLOR_BTNFACE etc. bleiben.

Thomas

Hallo Thomas!

Meine Lösung in der Form

AfxRegisterWndClass( NULL, 0, ( HBRUSH )CBrush( RGB( 255, 255, 0 )), 0 );

funktioniert nur dann, wenn Du auf der selben Stapelebene das zur Fensterklasse passende Fenster auch anlegst. Das benötigte CBrush-Objekt wird gemäß dem aktuellen Kontext lokal auf dem Stapel angelegt und ist klarerweise ungültig, sobald Du die Funktion verlässt, in der obige Zeile steht.

Das heißt, dass Du

( HBRUSH )CBrush( RGB( 255, 255, 0 ))

durch ein CBrush-Objekt ersetzen musst, welches für die Dauer der Existenz Deines Fensters zu der registrierten Fenster-Klasse auch existieren muss. Am besten kapselst Du Dein Fenster in einer C+±Klasse, welche auch den CBrush enthält. Im Konstruktur oder der Create( )-Methode kannst Du die Fenster-Klasse registrieren, nachdem du den Pinsel angelegt hast:

m\_Brush.CreateSolidBrush( RGB( 255, 255, 0 ));
AfxRegisterWndClass( NULL, 0, ( HBRUSH )m\_Brush, 0 );

Grüße Safog

Hallo,
vielen Dank für Deine Geduld und die Erklärung :smile:

Oops, eigentlich hatte ich nur einen peinlichen Fehler im Quelltext (wollte es eben auf die Schnelle einbauen):
Auf Deinen Quelltext übertragen hatte ich

CBrush m\_Brush

mit im Konstruktor stehen (aua, tat das weh als ich jetzt noch mal reingeschaut habe).

m_Brush.CreateSolidBrush( RGB( 255, 255, 0 ));
AfxRegisterWndClass( NULL, 0, ( HBRUSH )m_Brush, 0 );

Ich verspreche demnächst alle Eigenschaften ordentlich (mindestens unter protected) in der Klasse zu deklarieren !!!
*rot anlauf*

Vielen, vielen Dank
Thomas