Freigeben über


Gerätekontexte

Ein Gerätekontext ist eine Windows-Datenstruktur mit Informationen zu den Zeichnungsattributen eines Geräts, z. B. einer Anzeige oder eines Druckers. Alle Zeichnungsaufrufe werden über ein Gerätekontextobjekt ausgeführt, das die Windows-APIs zum Zeichnen von Linien, Formen und Text kapselt. Gerätekontexte ermöglichen die geräteunabhängige Zeichnung in Windows. Gerätekontexte können verwendet werden, um auf den Bildschirm, auf den Drucker oder auf eine Metadatei zu zeichnen.

CPaintDC-Objekte kapseln den allgemeinen Idiom von Windows, rufen die BeginPaint Funktion auf und zeichnen dann im Gerätekontext und rufen dann die EndPaint Funktion auf. Der CPaintDC Konstruktor ruft BeginPaint Sie auf, und der Destruktor ruft auf EndPaint. Der vereinfachte Prozess besteht darin, das CDC-Objekt zu erstellen, zu zeichnen und dann das CDC Objekt zu zerstören. Im Rahmen ist ein Großteil dieses Prozesses automatisiert. Insbesondere wird Ihre OnDraw Funktion bereits CPaintDC vorbereitet (via OnPrepareDC) übergeben, und Sie zeichnen einfach hinein. Sie wird durch das Framework zerstört, und der zugrunde liegende Gerätekontext wird bei Rückgabe vom Aufruf ihrer OnDraw Funktion an Windows freigegeben.

CClientDC-Objekte kapseln die Arbeit mit einem Gerätekontext, der nur den Clientbereich eines Fensters darstellt. Der CClientDC Konstruktor ruft die GetDC Funktion auf, und der Destruktor ruft die ReleaseDC Funktion auf. CWindowDC-Objekte kapseln einen Gerätekontext, der das gesamte Fenster einschließlich des Frames darstellt.

CMetaFileDC-Objekte kapseln die Zeichnung in eine Windows-Metadatei. Im Gegensatz zum CPaintDC übergebenen OnDrawWert müssen Sie in diesem Fall "OnPrepareDC" selbst aufrufen.

Mauszeichnung

Die meisten Zeichnungen in einem Frameworkprogramm – und damit die meisten Gerätekontextarbeiten – werden in der Memberfunktion der Ansicht OnDraw ausgeführt. Sie können jedoch weiterhin Gerätekontextobjekte für andere Zwecke verwenden. Um beispielsweise Nachverfolgungsfeedback für Mausbewegungen in einer Ansicht bereitzustellen, müssen Sie direkt in die Ansicht zeichnen, ohne darauf zu warten OnDraw , dass sie aufgerufen werden.

In diesem Fall können Sie ein CClientDC-Gerätekontextobjekt verwenden, um direkt in die Ansicht zu zeichnen.

Was möchten Sie mehr über

Siehe auch

Fensterobjekte