在Qt/C 中使用Areo Snap、陰影和動畫來建立無邊框視窗
在Windows 中,無邊框視窗需要妥協: Aero 陰影、捕捉和最小化動畫等功能的遺失。但是,透過利用 Windows API,可以複製 Office 2013 和 Steam 等應用程式中的無縫體驗。
隱藏邊框
要隱藏視窗邊框,請攔截視窗過程中的 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_THICKFRAME | WS_MINIMIZEBOX | WS_MAXIMIZEBOX | WS_CAPTION。此樣式還支援 Aero 捕捉、最大化和平滑最小化動畫。
附加說明
範例項目
要進行實際演示,請下載提供的範例項目。按 F11 在無邊框和視窗模式之間切換,而 F12 則啟動或停用無邊框陰影。
以上是Qt/C 應用程式如何透過 Aero Snap、陰影和動畫實現無邊框視窗?的詳細內容。更多資訊請關注PHP中文網其他相關文章!