次の方法で共有


デバイス コンテキストの表示

アプリケーションは、BeginPaintGetDC、または GetDCEx関数をし、対応する出力が表示されるウィンドウを識別することによって、ディスプレイ DC を取得します。 通常、アプリケーションは、クライアント領域に描画する必要がある場合にのみ、ディスプレイ DC を取得します。 ただし、GetWindowDC 関数を呼び出すことによって、ウィンドウ のデバイス コンテキスト を取得できます。 アプリケーションの描画が完了したら、EndPaint を呼び出すか、ReleaseDC関数呼び出して DC を解放する必要があります。

ビデオ ディスプレイには、次の 5 種類の DC があります。

  • クラス
  • コモン
  • プライベート

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

クラス のデバイス コンテキスト は、16 ビット バージョンの Windows との互換性のために厳密にサポートされています。 アプリケーションを記述するときは、クラス デバイス コンテキストを使用しないでください。代わりにプライベート デバイス コンテキストを使用してください。

一般的なデバイス コンテキスト

一般的なデバイス コンテキスト は、システムによって特別なキャッシュに保持されているディスプレイ DC です。 一般的なデバイス コンテキストは、使用頻度の低い描画操作を実行するアプリケーションで使用されます。 システムは、DC ハンドルを返す前に、既定のオブジェクト、属性、およびモードを使用して、共通のデバイス コンテキストを初期化します。 新しいオブジェクトの選択、既存のオブジェクトの属性の変更、または新しいモードの選択を行うために GDI 関数のいずれかが呼び出されない限り、アプリケーションによって実行される描画操作では、これらの既定値が使用されます。

一般的なデバイス コンテキストの数は限られているため、アプリケーションは描画が完了した後に解放する必要があります。 アプリケーションが共通のデバイス コンテキストを解放すると、既定のデータに対する変更はすべて失われます。

プライベート デバイス コンテキスト

プライベート デバイス コンテキスト は、一般的なデバイス コンテキストとは異なり、アプリケーションがデータを解放した後も既定のデータに対する変更を保持する DC を表示します。 プライベート デバイス コンテキストは、コンピューター支援設計 (CAD) アプリケーション、デスクトップ発行アプリケーション、描画および描画アプリケーションなど、多数の描画操作を実行するアプリケーションで使用されます。 プライベート デバイス コンテキストはシステム キャッシュの一部ではないため、使用後に解放する必要はありません。 システムは、そのクラスの最後のウィンドウが破棄された後、プライベート デバイス コンテキストを自動的に削除します。

アプリケーションは、WNDCLASS 構造体のメンバー スタイルを初期化し、RegisterClass 関数を呼び出すときに、まずCS_OWNDCウィンドウ クラス スタイルを指定することによって、プライベート デバイス コンテキストを作成します。 (ウィンドウ クラスの詳細については、「ウィンドウ クラスの 」を参照してください)。

CS_OWNDC スタイルのウィンドウを作成した後、アプリケーションは、GetDCGetDCExまたは BeginPaint 関数を 1 回呼び出して、プライベート デバイス コンテキストを識別するハンドルを取得できます。 アプリケーションは、このクラスで作成されたウィンドウを削除するまで、このハンドル (および関連付けられている DC) を引き続き使用できます。 グラフィック オブジェクトとその属性、またはグラフィック モードに対する変更は、ウィンドウが削除されるまでシステムによって保持されます。

ウィンドウ デバイス コンテキスト

ウィンドウ のデバイス コンテキスト を使用すると、アプリケーションは、クライアント以外の領域を含め、ウィンドウ内の任意の場所に描画できます。 ウィンドウ デバイス コンテキストは、通常、カスタムの非クライアント領域を持つウィンドウの WM_NCPAINT メッセージと WM_NCACTIVATE メッセージを処理するアプリケーションで使用されます。 ウィンドウ デバイス コンテキストの使用は、他の目的には推奨されません。 詳細については、以下を参照してください。GetWindowDCを参照してください。

親デバイス コンテキスト

親デバイス コンテキスト を使用すると、アプリケーションはウィンドウのクリッピング領域を設定するために必要な時間を最小限に抑えることができます。 通常、アプリケーションは親デバイス コンテキストを使用して、プライベートまたはクラスのデバイス コンテキストを必要とせずに、コントロール ウィンドウの描画を高速化します。 たとえば、システムは、プッシュ ボタンと編集コントロールに親デバイス コンテキストを使用します。 親デバイス コンテキストは、子ウィンドウでのみ使用することを目的としており、最上位またはポップアップ ウィンドウでは使用されません。 詳細については、以下を参照してください。「親ディスプレイ デバイス コンテキスト を参照してください。