【发布时间】:2012-10-20 13:23:03
【问题描述】:
我有以下 C++ 行,它从 GDI 的设备上下文中获取 GDI+ 句柄:
//HDC hDC = device context from GDI
if(hDC)
{
//Obtain graphics handle for GDI++
Graphics* pgrpx = new Graphics(hDC); //I get invalid memory exception here
//Code continues
//...
//Free object
delete pgrpx;
pgrpx = NULL;
}
它在我的测试中运行良好。
但最近我收到了应用程序的崩溃转储,在我在上面的代码中指出的行中出现“线程引用的内存位置,它无法访问”异常——就在应该初始化 Graphics 对象的位置.
这可能是什么问题?以及如何解决?
【问题讨论】:
-
你调用GDI+提供的初始化函数了吗?
-
是的。忘了提那个。是 Gdiplus::GdiplusStartup 吗?
-
类似的东西,但我也在考虑另一个(或者可能只是您需要创建的对象)。我没有经常使用 GDI+,部分原因是试图记住(如何)初始化它的额外麻烦。
-
@NathanMoinvaziri:hDC 来自 CreateCompatibleDC,我检查它是否为 NULL。但即使不是,那个 Graphics 构造函数能抛出异常吗?
-
可能这个错误是因为在另一个线程上创建了hDC。
标签: c++ windows winapi gdi+ gdi