[英]Draw in the nonclient area with Direct2D
在此頁面上: https://docs.microsoft.com/en-us/windows/win32/gdi/wm-ncpaint解釋了如何使用 GDI 在非客戶區繪圖。
如何使用 Direct2D 在 window 的非客戶區繪圖,而無需處理 GDI 或 GDI+?
首先, WM_NCPAINT
是舊的。 使用它將禁用 window 的 DWM 主題,從而提供 windows 經典/7 基本外觀。 所以不要這樣做。
但是要使用任何渲染 API 在客戶區繪制,請從 window 中刪除標准 window 幀,方法是在WM_NCCALCSIZE
消息中的 wParam 為真時返回 0。
case WM_NCCALCSIZE:
if (static_cast<bool>(wParam))
return 0;
return DefWindowProc(hwnd, msg, wParam, lParam);
如果要保留標准邊界,請重新計算 WM_NCCALCSIZE 中的WM_NCCALCSIZE
邊界。
然后要獲得“客戶區”標題欄,請使用DwmExtendFrameIntoClientArea
並從TOP
擴展它。
確保處理WM_NCHITTEST
以便拖動 window 也可以工作。
確保在 direct2d 中預乘您的ALPHA
。 在 (0,0) 處繪制一個矩形將在您的新自定義 window 的標題欄中繪制一個矩形。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.