微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

对非客户区域的控制被错误地绘制为透明

如何解决对非客户区域的控制被错误地绘制为透明

我按照https://docs.microsoft.com/en-gb/windows/win32/dwm/customframe?redirectedfrom=MSDN中的示例自定义了窗口框架的非客户区。在这个非客户区,我想添加一个容器对话框和一些自定义按钮。我无法在容器对话框中获得想要绘制的颜色。相反,它始终在该区域涂成透明。这个问题在下面的 2 个图中展示(背景是用来展示透明度的)。

我想要的效果是:

enter image description here

但是画出来的是:

enter image description here

如您所见,容器对话框想要绘制为紫色,但绘制为透明,客户图片按钮(圆圈内的灰色十字)也绘制为透明。

我用来处理容器对话框的 WM_PAINT 的代码是:

PAINTSTRUCT ps;
HDC hDC = BeginPaint(hwnd,&ps);
RECT rc;
GetClientRect(hwnd,&rc);
Gdiplus::Graphics g(hDC);
Gdiplus::Color clr(255,0);
clr.SetFromCOLORREF(RGB( 85,107,47));
Gdiplus::SolidBrush b(clr);
g.FillRectangle(&b,rc.left,rc.top,RECT_WIDTH(rc),RECT_HEIGHT(rc));
EndPaint(hwnd,&ps);

我用谷歌搜索但找不到类似问题的主题(可能是我没有使用正确的关键字)。我不熟悉使用winapi绘制非客户区。非常感谢任何指出我遗漏的内容解决方案方向的帮助。

演示问题的 VS 项目链接如下: CustomCaption.zip

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。