SelectObject() Hilfe

ibafluss

Erfahrenes Mitglied
Hey Leute!
Ich bin grad am lernen mit der WinApi und bin da auf eine Zeile gestoßen, die ich auch mit MSDN nicht lösen konnte:

Code:
HBRUSH hOldBrush = (HBRUSH)SelectObject(hDC, CreateSolidBrush (RGB (10, 120, 220)));

Also mit CreateSolidBrush() wird ein HBRUSH Objekt erstellt, dass mit RGB() beschrieben wird. In der MSDN steht für SelectObject(), dass ein Objekt ausgewählt wird und das neue Objekt dann das alte ersetzt. Nur gebe ich ja nur ein Objekt an, wo ist dann das neue bzw. alte?

Lg
 
Hi

hOldBrush ist das Alte.
Zu einem Zeitpunkt kann nur ein Brush da sein. Das neue, aus CreateSolidBrush,
ersetzt das Alte, das zur Vollständigkeit returned wird.
 
Für was wird das SelectObject() denn benötigt?
Ich meine warum geht es nicht nur mit CreateSolidBrush()?

Code:
HBRUSH hOldBrush = CreateSolidBrush(RGB(10,120,220)));

Lg
 
1) kann mach sich so mehrere Brushes anlegen und dazwischen wechseln.
Wenn man zB. nur zwei braucht und immer wechselt, würde das immer-neu-erstellen
langsamer und resourcen-verschwenderischer sein.

2) "verbindet" man mit dem SelectObject das hDc mit zB. dem Brush.
Man kann ja auch mehrere hDc´s haben.
Nur CreateSolidBrush wäre nur dann möglich, wenn es immer das eine fixe hDc gibt.
 
Zu 1)
Das geht ja ohne SelectObject() auch oder?

Code:
HBRUSH h1 = CreateSolidBrush (RGB (100, 120, 140);
HBRUSH h2 = CreateSolidBrush (RGB (120, 100, 140);

Jetzt hab ich zwei verschiedene und kann zwischen denen wechseln oder?
 
Ja, genau.
Aber zum Wechseln brauchst du eben SelectObject.

Wenn du drei Pinsel und deine beiden Hände hernimmst, sind die Pinsel die Brushes
und jede Hand ein hDc.
Am Anfang liegen alle drei Pinsel vor dir am Tisch, die Hände sind leer.
Jetzt kannst du mit einem SelectObject den Pinsel 1 in die rechte Hand nehmen,
mit dem Nächsten den Pinsel 2 in die Linke Hand.
Mit einem SelectObject für rechte Hand und Pinsel 3 legst du den ersten wieder auf den Tisch
(welcher weggelegt wird: Returnwert) und nimmst den Dritten.
 
Zurück