ウィンドウに描画するタイミング
アプリケーションは、ウィンドウを最初に作成するとき、ウィンドウのサイズを変更するとき、別のウィンドウの後ろからウィンドウを移動するとき、ウィンドウを最小化または最大化するとき、開いているファイルからデータを表示するとき、表示されるデータの一部をスクロール、変更、または選択するときなど、さまざまなタイミングでウィンドウに描画されます。
システムは、ウィンドウの移動やサイズ変更などのアクションを管理します。 アクションがウィンドウの内容に影響を与える場合、システムはウィンドウの影響を受ける部分を更新の準備完了としてマークし、次の機会にウィンドウのウィンドウ プロシージャに WM_PAINT メッセージを送信します。 メッセージは、何を更新する必要があるかを判断し、必要な描画を実行するためのアプリケーションへのシグナルです。
開いているファイルの表示や表示されるデータの選択など、一部のアクションはアプリケーションによって管理されます。 これらのアクションの場合、アプリケーションは、アクションの影響を受けるウィンドウの部分を更新するようにマークして、次の機会に WM_PAINT メッセージを送信することができます。 アクションにすぐにフィードバックが必要な場合は、WM_PAINTを待たずに、アクションの実行中にアプリケーションを描画できます。 たとえば、一般的なアプリケーションでは、次の WM_PAINT メッセージが領域を更新するのを待つのではなく、ユーザーが選択した領域が強調表示されます。
いずれの場合も、アプリケーションは作成されるとすぐにウィンドウに描画できます。 ウィンドウに描画するには、アプリケーションが最初にウィンドウのディスプレイ デバイス コンテキストへのハンドルを取得する必要があります。 理想的には、アプリケーションは、WM_PAINT メッセージの処理中に描画操作のほとんどを実行します。 この場合、アプリケーションは、BeginPaint 関数を呼び出して、表示デバイス コンテキストを取得します。 WinMain 内から、キーボードまたはマウス メッセージの処理中など、アプリケーションが他の時点で描画する場合は、GetDCまたは GetDCEx 関数を呼び出して表示 DC を取得します。