问题描述
我按照https://docs.microsoft.com/en-gb/windows/win32/dwm/customframe?redirectedfrom=MSDN中的示例自定义了窗口框架的非客户区。在这个非客户区,我想添加一个容器对话框和一些自定义按钮。我无法在容器对话框中获得想要绘制的颜色。相反,它始终在该区域涂成透明。这个问题在下面的 2 个图中展示(背景是用来展示透明度的)。
我想要的效果是:
如您所见,容器对话框想要绘制为紫色,但绘制为透明,客户图片按钮(圆圈内的灰色十字)也绘制为透明。
我用来处理容器对话框的 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 (将#修改为@)