Как использовать GDI + в C?

Заявление об ограничении ответственности: я только начинаю работать с C, поэтому вполне вероятно, что я упускаю что-то очевидное или думаю неправильно! :)

Как именно я буду использовать GDI + в чистом C? Насколько я понимаю, GDI + имеет обернутые объекты, созданные для C ++, но под ним лежит плоский API, доступный через gdiplusflat.h , дружественный к C. заголовок.

Моя проблема в том, что когда я # включите его, я получаю следующие ошибки:

C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\gdiplusflat.h(30) : error C2143: syntax error : missing '{' before '__stdcall'
C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\gdiplusflat.h(31) : error C2146: syntax error : missing ')' before identifier 'brushMode'
C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\gdiplusflat.h(31) : error C2061: syntax error : identifier 'brushMode'
C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\gdiplusflat.h(31) : error C2059: syntax error : ';'
C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\gdiplusflat.h(31) : error C2059: syntax error : ','
C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\gdiplusflat.h(31) : error C2059: syntax error : ')'
and 100 more...

Теперь я думаю, что эти ошибки связаны с тем, что GpStatus не определен, потому что просмотр GdiPlusFlat.h показывает, что все функции стиль:

// WINGDIAPI is #defined as __stdcall
GpStatus WINGDIPAPI
GdipCreatePath(GpFillMode brushMode, GpPath **path);
GpStatus WINGDIPAPI
GdipCreatePath2(GDIPCONST GpPointF*, GDIPCONST BYTE*, INT, GpFillMode,
                                    GpPath **path);
GpStatus WINGDIPAPI
GdipCreatePath2I(GDIPCONST GpPoint*, GDIPCONST BYTE*, INT, GpFillMode,
                                     GpPath **path);
etc...

Проблема в том, что GpStatus является typedef для Status в GdiPlusGpStubs.h (заголовок C ++) и Status само по себе является перечислением, определенным в GdiPlusTypes.h (также заголовок C ++). Я сам пытался определить перечисление, но по какой-то причине компилятор его не принял!

Итак ... как точно использовать функции GDI + в C? Следует ли мне просто динамически загружать gdiplus.dll?

12
задан Meta 25 February 2011 в 07:10
поделиться