Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Eine Anwendung kann die Attribute für einen Stift, einen Pinsel, eine Palette, eine Schriftart oder eine Bitmap abrufen, indem die GetCurrentObject- und GetObject--Funktionen aufgerufen werden. Die GetCurrentObject--Funktion gibt einen Handle zurück, der das aktuell in den DC ausgewählte Objekt identifiziert; die GetObject--Funktion gibt eine Struktur zurück, die die Attribute des Objekts beschreibt.
Das folgende Beispiel zeigt, wie eine Anwendung die aktuellen Pinselattribute abrufen und die abgerufenen Daten verwenden kann, um zu bestimmen, ob ein neuer Pinsel ausgewählt werden muss.
HDC hdc; // display DC handle
HBRUSH hbrushNew, hbrushOld; // brush handles
HBRUSH hbrush; // brush handle
LOGBRUSH lb; // logical-brush structure
// Retrieve a handle identifying the current brush.
hbrush = GetCurrentObject(hdc, OBJ_BRUSH);
// Retrieve a LOGBRUSH structure that contains the
// current brush attributes.
GetObject(hbrush, sizeof(LOGBRUSH), &lb);
// If the current brush is not a solid-black brush,
// replace it with the solid-black stock brush.
if ((lb.lbStyle != BS_SOLID)
|| (lb.lbColor != 0x000000))
{
hbrushNew = GetStockObject(BLACK_BRUSH);
hbrushOld = SelectObject(hdc, hbrushNew);
}
// Perform painting operations with the solid-black brush.
// After completing the last painting operation with the new
// brush, the application should select the original brush back
// into the device context and delete the new brush.
// In this example, hbrushNew contains a handle to a stock object.
// It is not necessary (but it is not harmful) to call
// DeleteObject on a stock object. If hbrushNew contained a handle
// to a brush created by a function such as CreateBrushIndirect,
// it would be necessary to call DeleteObject.
SelectObject(hdc, hbrushOld);
DeleteObject(hbrushNew);
Anmerkung
Die Anwendung hat beim erstmaligen Aufrufen der SelectObject Funktion den ursprünglichen Pinselhandle gespeichert. Dieser Ziehpunkt wird gespeichert, sodass der originale Pinsel wieder in den DC ausgewählt werden kann, nachdem der letzte Malvorgang mit dem neuen Pinsel abgeschlossen wurde. Nachdem der ursprüngliche Pinsel wieder in den DC-Computer ausgewählt wurde, wird der neue Pinsel gelöscht, und der Speicher wird im GDI-Heap freigegeben.