次の方法で共有


クラス表示デバイス コンテキスト

クラスのデバイス コンテキストを使用すると、アプリケーションは、指定したクラスに属するすべてのウィンドウに対して 1 つの表示デバイス コンテキストを使用できます。 クラス デバイス コンテキストは、多くの場合、同じ属性値を使用して描画されるコントロール ウィンドウで使用されます。 プライベート デバイス コンテキストと同様に、クラス デバイス コンテキストは、描画用のデバイス コンテキストを準備するために必要な時間を最小限に抑えます。

CS_CLASSDC スタイルを持つウィンドウ クラスに属している場合、システムはウィンドウのクラス デバイス コンテキストを提供します。 システムは、クラスに属する最初のウィンドウを作成するときにデバイス コンテキストを作成し、その後に作成されたすべてのウィンドウに対して同じデバイス コンテキストをクラスで使用します。 最初は、クラス デバイス コンテキストの属性の既定値は共通のデバイス コンテキストと同じですが、アプリケーションはこれらをいつでも変更できます。 システムは、クラスの最後のウィンドウが破棄されるまで、クリッピング領域とデバイスの配信元を除くすべての変更を保持します。 1 つのウィンドウに対して行われた変更は、そのクラスのすべてのウィンドウに適用されます。

アプリケーションは、最初のウィンドウが作成された後、いつでも GetDC 関数を使用して、クラス デバイス コンテキストへのハンドルを取得できます。 クラス デバイス コンテキストはディスプレイ デバイス コンテキスト キャッシュの一部ではないため、アプリケーションはハンドルを解放せずに保持して使用できます。 アプリケーションが同じウィンドウ クラスに別のウィンドウを作成する場合、アプリケーションはクラス デバイス コンテキストをもう一度取得する必要があります。 デバイス コンテキストを取得すると、新しいウィンドウの適切なデバイスの配信元とクリッピング領域が設定されます。 アプリケーションがクラス内の新しいウィンドウのクラス デバイス コンテキストを取得した後、デバイス コンテキストを使用して元のウィンドウに描画することはできなくなります。そのウィンドウに対してもう一度取得する必要はありません。 一般に、ウィンドウに描画する必要があるたびに、アプリケーションはウィンドウのクラス デバイス コンテキストを明示的に取得する必要があります。

クラス デバイス コンテキストを使用するアプリケーションは、WM_PAINT メッセージの処理時に常 BeginPaint を呼び出す必要があります。 この関数は、ウィンドウの正しいデバイスの原点とクリッピング領域を設定し、更新領域を組み込みます。 また、アプリケーションは EndPaint呼び出して、BeginPaint 隠した場合にキャレットを復元する必要があります。 EndPaint は、クラス デバイス コンテキストに対して他の影響を与えません。

システムは、WM_ERASEBKGND メッセージをアプリケーションに送信するときにクラス デバイス コンテキストを渡し、現在の属性値が、このメッセージを処理するときにアプリケーションまたはシステムによって実行されるすべての描画に影響を与えるのを許可します。 プライベート デバイス コンテキストを持つウィンドウの場合と同様に、アプリケーションは GetDCExを使用して、クラス デバイス コンテキストを持つウィンドウの共通のデバイス コンテキストをシステムに強制的に返すことができます。

クラス デバイス コンテキストの使用は推奨されません。