【问题标题】:Can't return Graphics object from a function in Win32 C++ GDI+无法从 Win32 C++ GDI+ 中的函数返回图形对象
【发布时间】: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 不提供像 DuplicateDCCopyDC 这样的调用。由于这些 API 调用没有意义,因此很容易理解为什么您不能复制分配或复制构造 Graphics 对象。

标签: c++ winapi graphics gdi+


【解决方案1】:

谢谢大家。该函数现在运行良好,如下所示:

Graphics *StartPaint(HWND win, HDC *hdc, 

PAINTSTRUCT *ps)
{
    *hdc = BeginPaint(win, ps);
    return new Graphics(*hdc);
}

【讨论】:

    猜你喜欢
    • 2014-05-15
    • 2021-08-09
    • 1970-01-01
    • 1970-01-01
    • 2014-07-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多