【发布时间】:2020-05-07 13:36:56
【问题描述】:
我正在创建一些有助于一点点 GDI+ 的函数。我已经创建了这个函数来开始绘制在 WM_PAINT 中使用:
Graphics StartPaint(HWND win, HDC *hdc, PAINTSTRUCT *ps)
{
*hdc = BeginPaint(win, ps);
Graphics g(*hdc);
return g;
}
它给出了编译错误并将我带到“gdiplusgraphics.h”并指向 这一行:
Graphics(const Graphics&);
说它是私有的。
经过几次尝试,我发现问题出在函数中的 return 语句上。为什么return语句会报这样的错误,我该如何解决这个问题?
我使用代码块。
谢谢。
【问题讨论】:
-
确切的错误是什么?错误指向的行似乎是
Graphics对象的复制构造函数。 -
您不能复制构造
Graphics对象。这应该是显而易见的。值得怀疑的是你希望StartPaint解决的问题。 -
另外请描述一下您要做什么...至少可以说是奇怪。
-
@wally 尝试在函数外部复制图形对象时,返回语句中出现错误。
-
一个 GDI+
Graphics对象包装了一个 device context。由于显而易见的原因,Windows API 不提供像DuplicateDC或CopyDC这样的调用。由于这些 API 调用没有意义,因此很容易理解为什么您不能复制分配或复制构造Graphics对象。