ウィンドウ更新ロック
ウィンドウ更新ロック は、ウィンドウ内での描画の一時的な中断です。 システムはロックを使用して、ユーザーがウィンドウを移動またはサイズ変更するたびに、他のウィンドウが追跡四角形の上に描画されないようにします。 アプリケーションは、独自のウィンドウで同様の移動操作やサイズ変更操作を実行した場合に、ロックを使用して描画を防ぐことができます。
アプリケーションでは、LockWindowUpdate 関数を使用して、ロックするウィンドウを指定して、ウィンドウの更新ロックを設定またはクリアします。 ロックは、指定されたウィンドウとそのすべての子ウィンドウに適用されます。 ロックが設定されると、GetDC および BeginPaint関数は、表示領域が空のディスプレイ デバイス コンテキストを返します。 この場合、アプリケーションはウィンドウに引き続き描画できますが、すべての出力がクリップされます。 ロックは、ウィンドウの NULL 指定 LockWindowUpdateを呼び出して、アプリケーションがロックをクリアするまで保持されます。 LockWindowUpdate 、ウィンドウの表示領域が強制的に空になりますが、この関数は指定されたウィンドウを非表示にせず、WS_VISIBLE スタイル ビットをクリアしません。
ロックが設定されると、アプリケーションは GetDCEx 関数を使用して、DCX_LOCKWINDOWUPDATE値を使用して、ロックされたウィンドウ上に描画するディスプレイ デバイス コンテキストを取得できます。 これにより、キーボードまたはマウス メッセージを処理するときに、アプリケーションで追跡四角形を描画できます。 システムは、ユーザーがウィンドウを移動してサイズを設定するときに、このメソッドを使用します。 GetDCEx は、ディスプレイ デバイス コンテキスト キャッシュから表示デバイス コンテキストを取得するため、アプリケーションは描画後にできるだけ早くデバイス コンテキストを解放する必要があります。
ウィンドウ更新ロックが設定されている間、システムはロックされた各ウィンドウに対して累積された外接する四角形を作成します。 ロックが解除されると、システムはこの外接する四角形を使用してウィンドウとその子ウィンドウの更新領域を設定し、最終的な WM_PAINT メッセージを強制します。 蓄積された外接する四角形が空の場合 (つまり、ロックが設定されている間に描画が発生しなかった場合)、更新領域は設定されません。