- 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() */
diff --git a/include/windef.h b/include/windef.h
index 4b9800b..f567cd1 100644
--- a/include/windef.h
+++ b/include/windef.h
@@ -296,7 +296,6 @@
 DECLARE_HANDLE(HDESK);
 DECLARE_HANDLE(HWND);
 DECLARE_HANDLE(HKL);
-DECLARE_HANDLE(HIC);
 DECLARE_HANDLE(HRASCONN);
 
 /* Handle types that must remain interchangeable even with strict on */
@@ -310,30 +309,30 @@
 
 /* Callback function pointers types */
 
-typedef BOOL    (CALLBACK* DATEFMT_ENUMPROCA)(LPSTR);
-typedef BOOL    (CALLBACK* DATEFMT_ENUMPROCW)(LPWSTR);
+typedef BOOL    CALLBACK (*DATEFMT_ENUMPROCA)(LPSTR);
+typedef BOOL    CALLBACK (*DATEFMT_ENUMPROCW)(LPWSTR);
 DECL_WINELIB_TYPE_AW(DATEFMT_ENUMPROC)
-typedef BOOL    (CALLBACK *DLGPROC)(HWND,UINT,WPARAM,LPARAM);
-typedef LRESULT (CALLBACK *DRIVERPROC)(DWORD,HDRVR,UINT,LPARAM,LPARAM);
-typedef INT     (CALLBACK *EDITWORDBREAKPROCA)(LPSTR,INT,INT,INT);
-typedef INT     (CALLBACK *EDITWORDBREAKPROCW)(LPWSTR,INT,INT,INT);
+typedef BOOL    CALLBACK (*DLGPROC)(HWND,UINT,WPARAM,LPARAM);
+typedef LRESULT CALLBACK (*DRIVERPROC)(DWORD,HDRVR,UINT,LPARAM,LPARAM);
+typedef INT     CALLBACK (*EDITWORDBREAKPROCA)(LPSTR,INT,INT,INT);
+typedef INT     CALLBACK (*EDITWORDBREAKPROCW)(LPWSTR,INT,INT,INT);
 DECL_WINELIB_TYPE_AW(EDITWORDBREAKPROC)
-typedef LRESULT (CALLBACK *FARPROC)();
-typedef INT     (CALLBACK *PROC)();
-typedef BOOL    (CALLBACK *GRAYSTRINGPROC)(HDC,LPARAM,INT);
-typedef LRESULT (CALLBACK *HOOKPROC)(INT,WPARAM,LPARAM);
-typedef BOOL    (CALLBACK *PROPENUMPROCA)(HWND,LPCSTR,HANDLE);
-typedef BOOL    (CALLBACK *PROPENUMPROCW)(HWND,LPCWSTR,HANDLE);
+typedef LRESULT CALLBACK (*FARPROC)();
+typedef INT     CALLBACK (*PROC)();
+typedef BOOL    CALLBACK (*GRAYSTRINGPROC)(HDC,LPARAM,INT);
+typedef LRESULT CALLBACK (*HOOKPROC)(INT,WPARAM,LPARAM);
+typedef BOOL    CALLBACK (*PROPENUMPROCA)(HWND,LPCSTR,HANDLE);
+typedef BOOL    CALLBACK (*PROPENUMPROCW)(HWND,LPCWSTR,HANDLE);
 DECL_WINELIB_TYPE_AW(PROPENUMPROC)
-typedef BOOL    (CALLBACK *PROPENUMPROCEXA)(HWND,LPCSTR,HANDLE,LPARAM);
-typedef BOOL    (CALLBACK *PROPENUMPROCEXW)(HWND,LPCWSTR,HANDLE,LPARAM);
+typedef BOOL    CALLBACK (*PROPENUMPROCEXA)(HWND,LPCSTR,HANDLE,LPARAM);
+typedef BOOL    CALLBACK (*PROPENUMPROCEXW)(HWND,LPCWSTR,HANDLE,LPARAM);
 DECL_WINELIB_TYPE_AW(PROPENUMPROCEX)
-typedef BOOL    (CALLBACK* TIMEFMT_ENUMPROCA)(LPSTR);
-typedef BOOL    (CALLBACK* TIMEFMT_ENUMPROCW)(LPWSTR);
+typedef BOOL    CALLBACK (*TIMEFMT_ENUMPROCA)(LPSTR);
+typedef BOOL    CALLBACK (*TIMEFMT_ENUMPROCW)(LPWSTR);
 DECL_WINELIB_TYPE_AW(TIMEFMT_ENUMPROC)
-typedef VOID    (CALLBACK *TIMERPROC)(HWND,UINT,UINT,DWORD);
-typedef BOOL (CALLBACK *WNDENUMPROC)(HWND,LPARAM);
-typedef LRESULT (CALLBACK *WNDPROC)(HWND,UINT,WPARAM,LPARAM);
+typedef VOID    CALLBACK (*TIMERPROC)(HWND,UINT,UINT,DWORD);
+typedef BOOL CALLBACK (*WNDENUMPROC)(HWND,LPARAM);
+typedef LRESULT CALLBACK (*WNDPROC)(HWND,UINT,WPARAM,LPARAM);
 
 /*----------------------------------------------------------------------------
 ** FIXME:  Better isolate Wine's reliance on the xxx16 type definitions.