我有以下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对象的地方
这可能是什么问题?以及如何解决它?
答案 0 :(得分:2)
您是否检查过GDI +的初始化?我不确定问题是否存在,但你可以尝试一下。
Gdiplus::GdiplusStartupInput gdiplusStartupInput;
ULONG_PTR gdiplusToken;
if(GdiplusStartup(&gdiplusToken, &gdiplusStartupInput, NULL) != Gdiplus::Ok)
{
MessageBox(NULL, TEXT("GDI+ failed to start up!"),
TEXT("Error!"), MB_ICONERROR);
return -1;
}