При инициализации GDI+ происходит сбой приложения, почему?
У меня есть следующая строка 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.
В чем может быть проблема здесь? И как это решить?
1 ответ
Вы проверили инициализацию 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;
}