デバイス コンテキストは、ディスプレイやプリンターなどのデバイスの描画属性に関する情報を含む Windows データ構造です。 すべての描画呼び出しは、線、図形、およびテキストを描画するための Windows API をカプセル化するデバイス コンテキスト オブジェクトを介して行われます。 デバイス コンテキストを使用すると、Windows でのデバイスに依存しない描画が可能になります。 デバイス コンテキストは、画面、プリンター、またはメタファイルに描画するために使用できます。
CPaintDC オブジェクトは、Windows の一般的なイディオムをカプセル化し、 BeginPaint
関数を呼び出し、デバイス コンテキストで描画してから、 EndPaint
関数を呼び出します。
CPaintDC
コンストラクターはBeginPaint
を呼び出し、デストラクターはEndPaint
を呼び出します。 簡略化されたプロセスでは、 CDC オブジェクトを作成し、描画してから、 CDC
オブジェクトを破棄します。 フレームワークでは、このプロセスの多くが自動化されています。 特に、 OnDraw
関数は既に準備済みの CPaintDC
( OnPrepareDC
を介して) 渡され、単純にそれに描画されます。 フレームワークによって破棄され、基になるデバイス コンテキストは、 OnDraw
関数の呼び出しから戻ると Windows にリリースされます。
CClientDC オブジェクトは、ウィンドウのクライアント領域のみを表すデバイス コンテキストの操作をカプセル化します。
CClientDC
コンストラクターはGetDC
関数を呼び出し、デストラクターは ReleaseDC
関数を呼び出します。
CWindowDC オブジェクトは、フレームを含むウィンドウ全体を表すデバイス コンテキストをカプセル化します。
CMetaFileDC オブジェクトは、描画を Windows メタファイルにカプセル化します。
OnDraw
に渡されるCPaintDC
とは異なり、この場合は自分で OnPrepareDC を呼び出す必要があります。
マウス描画
フレームワーク プログラムのほとんどの描画 (したがって、ほとんどのデバイス コンテキスト作業) は、ビューの OnDraw
メンバー関数で行われます。 ただし、デバイス コンテキスト オブジェクトは他の目的で引き続き使用できます。 たとえば、ビュー内のマウスの動きに関する追跡フィードバックを提供するには、 OnDraw
が呼び出されるのを待たずにビューに直接描画する必要があります。
このような場合は、 CClientDC デバイス コンテキスト オブジェクトを使用してビューに直接描画できます。