gpt4 book ai didi

c++ - 使用 Direct2D 在非客户区绘制

转载 作者:太空宇宙 更新时间:2023-11-04 12:31:12 26 4
gpt4 key购买 nike

在此页面上:https://learn.microsoft.com/en-us/windows/win32/gdi/wm-ncpaint解释了如何使用 GDI 在非客户区绘制。

如何在不处理 GDI 或 GDI+ 的情况下使用 Direct2D 在窗口的非客户区进行绘制?

最佳答案

首先,WM_NCPAINT 是旧的。使用它将禁用窗口的 DWM 主题,提供 windows classic/7 基本外观。所以不要这样做。

但是要使用任何渲染 API 在客户区进行绘制,当您的 WM_NCCALCSIZE 消息中的 wParam 为真时,通过返回 0 来从窗口中移除标准窗口框架。

case WM_NCCALCSIZE:
if (static_cast<bool>(wParam))
return 0;
return DefWindowProc(hwnd, msg, wParam, lParam);

如果要保留标准边框,请在 WM_NCCALCSIZE 中重新计算窗口边界。

然后要获得“客户区”标题栏,请使用 DwmExtendFrameIntoClientArea 并从 TOP 扩展它。

确保处理 WM_NCHITTEST 以便拖动窗口也能正常工作。

确保在 direct2d 中预乘您的 ALPHA。在 (0,0) 处绘制矩形将在新自定义窗口的标题栏中绘制一个矩形。

参见:https://github.com/oberth/custom-chrome

关于c++ - 使用 Direct2D 在非客户区绘制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58605718/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com