При инициализации 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.

В чем может быть проблема здесь? И как это решить?

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;
}
2

Другие решения

Других решений пока нет …