Qt/C で Areo Snap、Shadow、Animation を使用した枠なしウィンドウの作成
Windows では、枠なしウィンドウには妥協が伴います。 Aero シャドウ、スナップ、最小化アニメーションなどの機能が失われます。ただし、Office 2013 や Steam などのアプリケーションで見られるシームレスなエクスペリエンスを再現することは、Windows API を活用することで可能です。
境界線を隠す
ウィンドウの境界線を隠すには、インターセプトします。ウィンドウ プロシージャの WM_NCCALCSIZE メッセージ。
<code class="cpp">case WM_NCCALCSIZE: { if (window->is_borderless) { return 0; } else { return DefWindowProc(hwnd, msg, wparam, lparam); } }</code>
Aero Shadow を有効にする
ウィンドウの周囲に輝く影を表示するには、DwmExtendFrameIntoClientArea 関数を使用します。
<code class="cpp">MARGINS borderless = {1,1,1,1}; DwmExtendFrameIntoClientArea(hwnd, &borderless);</code>
追加機能を有効にする
Steam のような境界のないウィンドウの動作を観察すると、ウィンドウ スタイル WS_POPUP | でシャドウが最適に機能することがわかります。 WS_THICKFRAME | WS_MINIMIZEBOX | WS_MAXIMIZEBOX | WS_CAPTION。このスタイルでは、Aero スナップ、最大化、スムーズな最小化アニメーションも有効になります。
追加メモ
サンプル プロジェクト
実際的なデモンストレーションについては、提供されているサンプル プロジェクトをダウンロードしてください。 F11 を押すとフチなしモードとウィンドウ モードが切り替わり、F12 を押すとフチなしシャドウがアクティブまたは非アクティブになります。
以上がQt/C アプリケーションは、Aero Snap、Shadow、アニメーションを使用してボーダーレス ウィンドウをどのように実現できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。