好的,直到现在我总是用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有效,请检查其他所有内容.确保传递指向需要地址的指针等.