- Define HIC in this header rather than in windef.h (this is the
  correct thing to do although it is unrelated to the C++ issues).
- WINE_HIC is an internal structure and it won't compile in C++ because
  it contains a field called 'private'. Enclosed in a __WINE__ ifdef.
- Reordered the CALLBACK and WINAPI directives so that it compiles with
  old g++ versions.

diff --git a/include/vfw.h b/include/vfw.h
index 747a547..4d1b50d 100644
--- a/include/vfw.h
+++ b/include/vfw.h
@@ -34,6 +34,9 @@
 
 /* Installable Compressor M? */
 
+DECLARE_HANDLE(HIC);
+
+#ifdef __WINE__
 /* HIC struct (same layout as Win95 one) */
 typedef struct tagWINE_HIC {
 	DWORD		magic;		/* 00: 'Smag' */
@@ -48,6 +51,7 @@
 	DWORD		x3;		/* 22: */
 					/* 26: */
 } WINE_HIC;
+#endif
 
 /* error return codes */
 #define	ICERR_OK		0
@@ -231,8 +235,8 @@
     DWORD               dwScale;
     DWORD               dwOverheadPerFrame;
     DWORD               dwReserved2;
-    LONG (CALLBACK *GetData)(LPARAM lInput,LONG lFrame,LPVOID lpBits,LONG len);
-    LONG (CALLBACK *PutData)(LPARAM lOutput,LONG lFrame,LPVOID lpBits,LONG len);
+    LONG CALLBACK (*GetData)(LPARAM lInput,LONG lFrame,LPVOID lpBits,LONG len);
+    LONG CALLBACK (*PutData)(LPARAM lOutput,LONG lFrame,LPVOID lpBits,LONG len);
 } ICCOMPRESSFRAMES;
 
 /* Values for wMode of ICOpen() */