Share via


ウィンドウに描画するタイミング

アプリケーションは、ウィンドウを最初に作成するとき、ウィンドウのサイズを変更するとき、別のウィンドウの後ろからウィンドウを移動するとき、ウィンドウを最小化または最大化するとき、開いているファイルからデータを表示するとき、表示されるデータの一部をスクロール、変更、または選択するときなど、さまざまなタイミングでウィンドウを描画します。

システムは、ウィンドウの移動やサイズ設定などのアクションを管理します。 アクションがウィンドウの内容に影響を与える場合、システムはウィンドウの影響を受ける部分を更新の準備ができているとマークし、次の機会にウィンドウのウィンドウ プロシージャに WM_PAINT メッセージを送信します。 メッセージは、何を更新する必要があるかを判断し、必要な描画を実行するためのアプリケーションへのシグナルです。

開いているファイルの表示や表示されるデータの選択など、一部のアクションはアプリケーションによって管理されます。 これらのアクションの場合、アプリケーションは、アクションの影響を受けるウィンドウの部分を更新するようにマークし、次の機会に WM_PAINT メッセージを送信できます。 アクションに即時のフィードバックが必要な場合は、WM_PAINTを待たずに、アクションの実行中にアプリケーションを描画できます。 たとえば、一般的なアプリケーションでは、次の WM_PAINT メッセージがエリアを更新するのを待つのではなく、ユーザーが選択した領域が強調表示されます。

いずれの場合も、アプリケーションは作成されるとすぐにウィンドウに描画できます。 ウィンドウで描画するには、アプリケーションが最初にウィンドウのディスプレイ デバイス コンテキストへのハンドルを取得する必要があります。 理想的には、アプリケーションは 、WM_PAINT メッセージ の処理中に描画操作のほとんどを実行します。 この場合、アプリケーションは BeginPaint 関数を呼び出してディスプレイ デバイス コンテキストを取得します。 アプリケーションは、 WinMain 内から、またはキーボードまたはマウス メッセージの処理中など、他の時点で描画する場合は、 GetDC または GetDCEx 関数を呼び出して表示 DC を取得します。