Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 是否可以复制GDI句柄?_C++_C_Windows_Gdi - Fatal编程技术网

C++ 是否可以复制GDI句柄?

C++ 是否可以复制GDI句柄?,c++,c,windows,gdi,C++,C,Windows,Gdi,或者在我的特殊情况下是windows区域HRGN 更新: 问题如下: 我有一个对象集合,每个对象都可以保存一个HRGN。一旦获得这些区域,当对象被破坏时,这些区域就会被释放。因为其中一些对象存储在std::vector中,所以我必须定义一个赋值运算符 到目前为止,我刚刚分配了这些HRGN,但这是一个bug。如果我复制这样的对象,每个对象都会尝试删除相同的区域,其中一个将使用不存在的区域。不,这是不可能的。GDI对象只支持每个对象一个句柄。不,这是不可能的。GDI对象只支持每个对象一个句柄。您不能

或者在我的特殊情况下是windows区域HRGN

更新: 问题如下:

我有一个对象集合,每个对象都可以保存一个HRGN。一旦获得这些区域,当对象被破坏时,这些区域就会被释放。因为其中一些对象存储在std::vector中,所以我必须定义一个赋值运算符


到目前为止,我刚刚分配了这些HRGN,但这是一个bug。如果我复制这样的对象,每个对象都会尝试删除相同的区域,其中一个将使用不存在的区域。

不,这是不可能的。GDI对象只支持每个对象一个句柄。

不,这是不可能的。GDI对象只支持每个对象一个句柄。

您不能复制HRGN句柄,但可以使用函数获取副本。

您不能复制HRGN句柄,但您可以使用函数获取副本。

将每个HRGN封装在以任何智能指针(例如共享指针)为模型的引用计数对象中。

将每个HRGN封装在以任何智能指针(例如共享指针)为模型的引用计数对象中。

为什么要复制句柄?您的问题可能有解决方案,但您需要提供更多的上下文和可能的代码段。谢谢,我添加了一些上下文。为什么要复制句柄?您的问题可能有解决方案,但您需要提供更多的上下文和可能的代码片段。谢谢,我添加了一些上下文。我曾想过使用RGN_COPY,但我不知道如何创建空区域。坏主意,GDI堆非常有限,至少在较旧的操作系统上是如此。它是有限的,但一个区域需要非常少的内存。我曾想过使用RGN_COPY,但我不知道如何创建一个空区域。坏主意,GDI堆是非常有限的,至少在较旧的操作系统上是如此。它是有限的,但一个区域需要非常少的内存。我希望我错过了一些api调用,似乎正确的解决方案是让引用计数自己。谢谢。我希望我错过了一些api调用,看来纠正的办法是让引用计数自己。非常感谢。