Windows での高度な Aero 機能を備えたボーダーレス ウィンドウの実装
Aero スナップ、シャドウ、最小化アニメーション、シェイクなどの高度な機能を備えたボーダーレス ウィンドウの作成機能的には難しい場合があります。この記事では、Office 2013、Visual Studio 2012、Steam などのアプリケーションの動作を模倣するソリューションを紹介します。
ウィンドウの境界線を隠す
ウィンドウの境界線を非表示にするには、 WM_NCCALCSIZE メッセージに応答し、ウィンドウがボーダーレスとして設定されている場合は 0 を返します。
<code class="C++">case WM_NCCALCSIZE: { if (window->is_borderless) { return 0; } else { return DefWindowProc(hwnd, msg, wparam, lparam); } }</code>
エアロ シャドウの追加
フレームを枠内に拡張してシャドウを有効にします。 DwmExtendFrameIntoClientArea を使用したクライアント領域:
<code class="C++">MARGINS borderless = {1,1,1,1}; DwmExtendFrameIntoClientArea(hwnd, &borderless);</code>
ウィンドウ スタイルの構成
シャドウやその他の機能が正しく動作することを確認するには、ウィンドウ スタイルに WS_POPUP | を含める必要があります。 WS_THICKFRAME | WS_MINIMIZEBOX | WS_MAXIMIZEBOX | WS_CAPTION.
注意とヒント
DwmExtendFrameIntoClientArea により、アルファ チャネルを含む画像を描画するときにクライアント領域にフレームが表示される場合があります。これを解決するには、透明でないウィジェットまたはブラシを透明な要素の後ろに配置します。
+-----------------+ | | |XXXXXXXXXXXXXXXX| | X | | X | | X | | XXXXX| | | | | +-----------------+
結論
これらの手順に従うことで、開発者は境界のないウィンドウを作成できます。 Aero スナップ、シャドウ、最小化アニメーション、シェイク機能。提供されているサンプル プロジェクトは、これらの機能の実装を示しています。
以上がWindows の高度な Aero 機能を備えたボーダーレス ウィンドウを作成するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。