Gdi +与MSVC ++编译器得到奇怪的“本机图形”运行时错误

时间:2011-11-13 15:28:16

标签: c++ windows winapi visual-c++ gdi+

好的,直到现在我总是使用GCC进行编码,所以我是MSVC ++的新手(这是错误的)。我用GDI plus编译了一个最小的Win Api程序。它编译得很好,但几乎在启动时就会出现运行时错误(我认为在调用WM_PAINT消息时会出现运行时错误)。这是我看到的: What I See

我的代码没什么特别的,只是显示一个矩形。 (当我使用GDI时它工作正常,但不能与GDI +一起工作)。

我的代码:

HDC hdc = GetDC(hwnd);

InvalidateRect(hwnd,NULL,FALSE);

ULONG_PTR token;
GdiplusStartupInput inp;
GdiplusStartup(&token,&inp,0);

Graphics g(hdc);
g.Clear(Color(0,0,0));
g.DrawRectangle(new Pen(Color(0,0,0)),10,10,100,100);

GdiplusShutdown(token);
ValidateRect(hwnd,NULL);

通过调试,我发现运行时错误几乎在调用Graphics g(hdc);构造函数时出现。我在Google等上找不到任何东西。我完全迷失了。有什么帮助吗?

2 个答案:

答案 0 :(得分:1)

WinAPI函数始终以这种或那种方式表示成功。您需要检查GetDC是否返回了有效句柄。请参阅Return value section of GetDC。输出中的访问冲突也指向某处的无效指针。如果DC有效,请检查其他所有内容。确保传递指向需要地址的指针等。

答案 1 :(得分:0)

hdc的价值是什么?

顺便说一句,你应该在调用GdiplusShutdown之前销毁g。