2016-08-01 5 views
0

Ich habe eine Stream erstellt von einem HGLOBAL in WinAPI (in Plain C, erstellt mit CreateStreamOnHGlobal()). Ich verwende es, um GpImage s im Speicher zu JPEG zu speichern.Wie verwendet man DispCallFunc, um IStream :: SetSize (0) in Plain aufzurufen C

Ich möchte den gleichen Speicher-Stream wiederverwenden, um mehrere GpImage s zu speichern. Also, ich muss den Stream zwischen jedem Anruf auf GdipSaveImageToStream() zurücksetzen.

Die Dokumentation von IStream zeigt ein Verfahren ::SetSize(), aber ich bin im Klar C.

Ich weiß, dass die Lösung die WinAPI Funktion DispCallFunc ist, aber ich weiß nicht, wie es zu benutzen und ich kann nicht finde eine gute Dokumentation darüber.

Irgendwelche Hilfe? Danke :)

+1

Die .h-Datei, die Sie # enthalten (objidl.h), die die IStream-Deklaration zur Verfügung gestellt hat, hat sowohl C++ - als auch C-Prototyp-Deklarationen. Die Dokumentation ist für C++, da dies bei weitem die üblichste Art ist, COM-Schnittstellen zu verwenden. Wenn Sie C verwenden, müssen Sie die C-Prototyp-Funktion Stream_SetSize (ptr, size) verwenden, wobei ptr der IStream * -Schnittstellenzeiger ist. –

+0

@HansPassant, der als Antwort gepostet werden sollte. –

+0

Keine Ahnung, warum du mir das erzählst, kann jeder als Antwort posten. Sie können zu. –

Antwort

3

können Sie zum Beispiel IStream_Reset verwenden, auch auf Ebene C können Sie einfach direkte Schnittstellenmethoden aufrufen, sagen IStream_Seek Makro. DispCallFunc hier absolut nicht verwandt

Verwandte Themen