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

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

我的代码没什么特别的,只是显示一个矩形. (当我使用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));
g.DrawRectangle(new Pen(Color(0,0)),10,100,100);

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

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

解决方法

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

相关文章

对象的传值与返回说起函数,就不免要谈谈函数的参数和返回值...
从实现装饰者模式中思考C++指针和引用的选择最近在看...
关于vtordisp知多少?我相信不少人看到这篇文章,多半是来自...
那些陌生的C++关键字学过程序语言的人相信对关键字并...
命令行下的树形打印最近在处理代码分析问题时,需要将代码的...
虚函数与虚继承寻踪封装、继承、多态是面向对象语言的三大特...