デバイス コンテキスト

デバイス コンテキストは、ディスプレイやプリンターといったデバイスの描画属性に関する情報を保持する Windows のデータ構造体です。 すべての描画呼び出しは、線や図形、テキストを描画するための Windows API をカプセル化するデバイスコンテキスト オブジェクトを通じて行われます。 Windows では、デバイス コンテキストがあることで、デバイスに依存しない描画が可能となっています。 デバイス コンテキストを使用して、画面やプリンター、メタファイルへの描画を行うことができます。

CPaintDC オブジェクトは、Windows の共通の表現形式をカプセル化するものです。BeginPaint 関数を呼び出し、デバイス コンテキストに対して描画を行った後、EndPaint 関数を呼び出します。 CPaintDC コンストラクターによって自動的に BeginPaint が呼び出され、デストラクターによって EndPaint が呼び出されます。 この単純化されたプロセスで、CDC オブジェクトの作成、描画、CDC オブジェクトの破棄が行われます。 さらに、そのプロセスまで、大半がフレームワークによって自動化されています。 特に、OnDraw 関数には、(OnPrepareDC によって) あらかじめ準備された CPaintDC が渡されるので、開発者はそれに対して描画するだけで済みます。 このオブジェクトは、OnDraw 関数の呼び出しから制御が戻った時点で、フレームワークによって破棄され、基になるデバイス コンテキストは Windows に解放されます。

ウィンドウのクライアント領域のみを表すデバイス コンテキストの操作は、CClientDC オブジェクトによってカプセル化されています。 CClientDC のコンストラクターが GetDC 関数を呼び出し、デストラクターが ReleaseDC 関数を呼び出します。 ウィンドウ全体 (そのフレームを含む) を表すデバイス コンテキストは、CWindowDC オブジェクトによってカプセル化されます。

Windows メタファイルへの描画は、CMetaFileDC オブジェクトによってカプセル化されます。 OnDraw に渡される CPaintDC とは対照的に、この場合は、開発者が自分で OnPrepareDC を呼び出す必要があります。

マウスの描画

フレームワーク プログラムにおけるほとんどの描画、つまり、デバイスコンテキストの大部分の作業は、ビューの OnDraw メンバー関数で行います。 ただし、デバイスコンテキスト オブジェクトは他の目的に使用することもできます。 たとえば、ビューにおけるマウス移動の追跡フィードバックを提供するためには、OnDraw の呼び出しを待たずに、ビューに対して直接描画を行う必要があります。

そのような場合、CClientDC デバイスコンテキスト オブジェクトを使用すれば、ビューに対して直接描画を行うことができます。

さらに詳しい情報

関連項目

Window オブジェクト