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 OnDraw
Wert 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.