Share via


WM_PAINT メッセージのない描画

アプリケーションは、WM_PAINT メッセージの処理中にほとんどの描画操作を実行しますが、WM_PAINT メッセージに依存せずにアプリケーションをウィンドウに直接描画する方が効率的な場合があります。 これは、テキストの選択やオブジェクトのドラッグやサイズ変更など、ユーザーがすぐにフィードバックを受け取る必要がある場合に便利です。 このような場合、通常、アプリケーションはキーボードまたはマウス メッセージの処理中に描画します。

WM_PAINT メッセージを使用せずにウィンドウに描画するには、アプリケーションは GetDC または GetDCEx 関数を使用して、ウィンドウの表示デバイス コンテキストを取得します。 ディスプレイ デバイスコンテキストを使用すると、アプリケーションはウィンドウに描画し、他のウィンドウに侵入しないようにすることができます。 アプリケーションの描画が完了すると、 ReleaseDC 関数を呼び出して、他のアプリケーションで使用するディスプレイ デバイス コンテキストを解放します。

WM_PAINT メッセージを使用せずに描画する場合、通常、アプリケーションはウィンドウを無効にしません。 代わりに、ウィンドウを簡単に復元して図面を削除できるような方法で描画します。 たとえば、ユーザーがテキストまたはオブジェクトを選択すると、通常、アプリケーションはウィンドウに既にあるものを反転して選択範囲を描画します。 アプリケーションは、選択を削除し、単にもう一度反転することで、ウィンドウの元の内容を復元することができます。

アプリケーションは、ウィンドウに加えられた変更を慎重に管理する責任があります。 特に、アプリケーションが選択を描画し、メッセージに介入 WM_PAINT メッセージが発生した場合、メッセージ中に行われた描画が選択を破損しないようにする必要があります。 これを回避するために、多くのアプリケーションは選択を削除し、通常の描画操作を実行した後、描画が完了したときに選択範囲を復元します。