Gdi + с компилятором MSVC ++ получаю странную ошибку "Native Graphics" во время выполнения - PullRequest
4 голосов
/ 13 ноября 2011

Хорошо, до сих пор я всегда кодировал GCC, поэтому я новичок в MSVC ++ (и это ошибки). Я собрал минимальную программу Win Api с GDI plus. Он хорошо компилируется, но закрывается с ошибкой во время выполнения почти сразу после запуска (я думаю, что ошибка во время выполнения возникает при вызове сообщения 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 ]

1 голос
/ 13 ноября 2011

Функции WinAPI всегда так или иначе указывают на успех. Вам нужно проверить, вернул ли GetDC верный дескриптор. См. Раздел Возвращаемое значение в GetDC . Нарушения доступа в выходных данных также указывают на неверный указатель где-то. Если DC действителен, проверьте все остальное. Обязательно указывайте, где требуется адрес и т. Д.

0 голосов
/ 13 ноября 2011

Что такое значение HDC?

Кстати, вы должны уничтожить g перед вызовом GdiplusShutdown.

...