i具有以下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;
}
它在我的测试中正常工作。
,但最近我收到了该应用的崩溃转储,其中"线程引用的内存位置,它无权访问"我在代码上方指向的行的例外 - 就在应该初始化的图形对象的位置。
这里有什么问题?以及如何解决它?
您是否检查了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;
}