SetWindowPos を使用してウィンドウの左端を変更する際のちらつきを軽減する
SetWindowPos でウィンドウの左端を変更する際のちらつきを軽減するには、次の方法を試してください。
- WS_EX_COMPOSITEDスタイルを使用する:ウィンドウのスタイルをWS_EX_COMPOSITEDに設定します。ウィンドウの拡張スタイルは、SetWindowLongPtr関数を呼び出すことで設定できます。これによりウィンドウの二重バッファ描画が有効になり、ちらつきが低減します。
- WM_SETREDRAWメッセージを使用:SetWindowPosでウィンドウの左端を変更する前に、WM_SETREDRAWメッセージを送信してウィンドウの再描画を無効にします。そして変更が完了してから、もう一度WM_SETREDRAWメッセージを送信してウィンドウの再描画を有効にします。これにより、ウィンドウのサイズ変更中にウィンドウのちらつきを防ぐことができます。
- SetWindowPos の後、すぐに UpdateWindow 関数呼び出し、これによりウィンドウが強制的に直ちに再描画されます。それによりウィンドウのちらつきの回数が減ります。
- WM_NCCALCSIZE メッセージを使う:ウィンドウプロシージャで WM_NCCALCSIZE メッセージを処理することで、クライアント領域以外の部分(枠線、タイトルバーなど)のカスタム描画が可能。カスタム描画により、ウィンドウのサイズ変更に伴うちらつきを抑えられる。
- 透過 SetLayeredWindowAttributes 関数の使用でウィンドウの透明度をやや低く設定することで、ウィンドウを調整したときのパチつきを軽減できます。SetLayeredWindowAttributes 関数の呼び出しによりウィンドウの透明度設定を行えます。
SetWindowPos でウィンドウの左端を変更したときのちらつきを抑えるには、以下を試すといいでしょう。