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

问题描述

我按照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 (将#修改为@)