GDI +初始化崩溃了应用程序,为什么?

时间:2012-10-31 05:50:44

标签: c++ windows winapi gdi+ 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 个答案:

答案 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;
}