Fix incorrect usage of COBJMACROS.

diff --git a/include/d3dx8core.h b/include/d3dx8core.h
index 9011757..7d33ec0 100644
--- a/include/d3dx8core.h
+++ b/include/d3dx8core.h
@@ -64,7 +64,7 @@
 DECLARE_INTERFACE_(ID3DXBuffer,IUnknown) { ID3DXBuffer_METHODS };
 #undef INTERFACE
 
-#ifdef COBJMACROS
+#if !defined(__cplusplus) || defined(CINTERFACE)
 /*** IUnknown methods ***/
 #define ID3DXBuffer_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
 #define ID3DXBuffer_AddRef(p)             (p)->lpVtbl->AddRef(p)
@@ -87,7 +87,7 @@
 DECLARE_INTERFACE_(ID3DXFont,IUnknown) { ID3DXFont_METHODS };
 #undef INTERFACE
 
-#ifdef COBJMACROS
+#if !defined(__cplusplus) || defined(CINTERFACE)
 /*** IUnknown methods ***/
 #define ID3DXFont_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
 #define ID3DXFont_AddRef(p)             (p)->lpVtbl->AddRef(p)
diff --git a/include/dmplugin.h b/include/dmplugin.h
index 06575c0..fe49bce 100644
--- a/include/dmplugin.h
+++ b/include/dmplugin.h
@@ -136,7 +136,7 @@
 DECLARE_INTERFACE_(IDirectMusicTool,IUnknown) { IDirectMusicTool_METHODS };
 #undef INTERFACE
 
-#ifdef COBJMACROS
+#if !defined(__cplusplus) || defined(CINTERFACE)
 /*** IUnknown methods ***/
 #define IDirectMusicTool_QueryInterface(p,a,b)      (p)->lpVtbl->QueryInterface(p,a,b)
 #define IDirectMusicTool_AddRef(p)                  (p)->lpVtbl->AddRef(p)
@@ -162,7 +162,7 @@
 DECLARE_INTERFACE_(IDirectMusicTool8,IDirectMusicTool) { IDirectMusicTool8_METHODS };
 #undef INTERFACE
 
-#ifdef COBJMACROS
+#if !defined(__cplusplus) || defined(CINTERFACE)
 /*** IUnknown methods ***/
 #define IDirectMusicTool8_QueryInterface(p,a,b)      (p)->lpVtbl->QueryInterface(p,a,b)
 #define IDirectMusicTool8_AddRef(p)                  (p)->lpVtbl->AddRef(p)
@@ -199,7 +199,7 @@
 DECLARE_INTERFACE_(IDirectMusicTrack,IUnknown) { IDirectMusicTrack_METHODS };
 #undef INTERFACE
 
-#ifdef COBJMACROS
+#if !defined(__cplusplus) || defined(CINTERFACE)
 /*** IUnknown methods ***/
 #define IDirectMusicTrack_QueryInterface(p,a,b)       (p)->lpVtbl->QueryInterface(p,a,b)
 #define IDirectMusicTrack_AddRef(p)                   (p)->lpVtbl->AddRef(p)
@@ -233,7 +233,7 @@
 DECLARE_INTERFACE_(IDirectMusicTrack8,IDirectMusicTrack) { IDirectMusicTrack8_METHODS };
 #undef INTERFACE
 
-#ifdef COBJMACROS
+#if !defined(__cplusplus) || defined(CINTERFACE)
 /*** IUnknown methods ***/
 #define IDirectMusicTrack8_QueryInterface(p,a,b)       (p)->lpVtbl->QueryInterface(p,a,b)
 #define IDirectMusicTrack8_AddRef(p)                   (p)->lpVtbl->AddRef(p)
diff --git a/include/dmusicc.h b/include/dmusicc.h
index 8deef39..6a2e962 100644
--- a/include/dmusicc.h
+++ b/include/dmusicc.h
@@ -386,7 +386,7 @@
 DECLARE_INTERFACE_(IDirectMusic,IUnknown) { IDirectMusic_METHODS };
 #undef INTERFACE
 
-#ifdef COBJMACROS
+#if !defined(__cplusplus) || defined(CINTERFACE)
 /*** IUnknown methods ***/
 #define IDirectMusic_QueryInterface(p,a,b)      (p)->lpVtbl->QueryInterface(p,a,b)
 #define IDirectMusic_AddRef(p)                  (p)->lpVtbl->AddRef(p)
@@ -415,7 +415,7 @@
 DECLARE_INTERFACE_(IDirectMusic8,IDirectMusic) { IDirectMusic8_METHODS };
 #undef INTERFACE
 
-#ifdef COBJMACROS
+#if !defined(__cplusplus) || defined(CINTERFACE)
 /*** IUnknown methods ***/
 #define IDirectMusic8_QueryInterface(p,a,b)       (p)->lpVtbl->QueryInterface(p,a,b)
 #define IDirectMusic8_AddRef(p)                   (p)->lpVtbl->AddRef(p)
@@ -458,7 +458,7 @@
 DECLARE_INTERFACE_(IDirectMusicBuffer,IUnknown) { IDirectMusicBuffer_METHODS };
 #undef INTERFACE
 
-#ifdef COBJMACROS
+#if !defined(__cplusplus) || defined(CINTERFACE)
 /*** IUnknown methods ***/
 #define IDirectMusicBuffer_QueryInterface(p,a,b)            (p)->lpVtbl->QueryInterface(p,a,b)
 #define IDirectMusicBuffer_AddRef(p)                        (p)->lpVtbl->AddRef(p)
@@ -492,7 +492,7 @@
 DECLARE_INTERFACE_(IDirectMusicInstrument,IUnknown) { IDirectMusicInstrument_METHODS };
 #undef INTERFACE
 
-#ifdef COBJMACROS
+#if !defined(__cplusplus) || defined(CINTERFACE)
 /*** IUnknown methods ***/
 #define IDirectMusicInstrument_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
 #define IDirectMusicInstrument_AddRef(p)             (p)->lpVtbl->AddRef(p)
@@ -514,7 +514,7 @@
 DECLARE_INTERFACE_(IDirectMusicDownloadedInstrument,IUnknown) { IDirectMusicDownloadedInstrument_METHODS };
 #undef INTERFACE
 
-#ifdef COBJMACROS
+#if !defined(__cplusplus) || defined(CINTERFACE)
 /*** IUnknown methods ***/
 #define IDirectMusicDownloadedInstrument_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
 #define IDirectMusicDownloadedInstrument_AddRef(p)             (p)->lpVtbl->AddRef(p)
@@ -536,7 +536,7 @@
 DECLARE_INTERFACE_(IDirectMusicCollection,IUnknown) { IDirectMusicCollection_METHODS };
 #undef INTERFACE
 
-#ifdef COBJMACROS
+#if !defined(__cplusplus) || defined(CINTERFACE)
 /*** IUnknown methods ***/
 #define IDirectMusicCollection_QueryInterface(p,a,b)            (p)->lpVtbl->QueryInterface(p,a,b)
 #define IDirectMusicCollection_AddRef(p)                        (p)->lpVtbl->AddRef(p)
@@ -558,7 +558,7 @@
 DECLARE_INTERFACE_(IDirectMusicDownload,IUnknown) { IDirectMusicDownload_METHODS };
 #undef INTERFACE
 
-#ifdef COBJMACROS
+#if !defined(__cplusplus) || defined(CINTERFACE)
 /*** IUnknown methods ***/
 #define IDirectMusicDownload_QueryInterface(p,a,b)          (p)->lpVtbl->QueryInterface(p,a,b)
 #define IDirectMusicDownload_AddRef(p)                      (p)->lpVtbl->AddRef(p)
@@ -584,7 +584,7 @@
 DECLARE_INTERFACE_(IDirectMusicPortDownload,IUnknown) { IDirectMusicPortDownload_METHODS };
 #undef INTERFACE
 
-#ifdef COBJMACROS
+#if !defined(__cplusplus) || defined(CINTERFACE)
 /*** IUnknown methods ***/
 #define IDirectMusicPortDownload_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
 #define IDirectMusicPortDownload_AddRef(p)             (p)->lpVtbl->AddRef(p)
@@ -626,7 +626,7 @@
 DECLARE_INTERFACE_(IDirectMusicPort,IUnknown) { IDirectMusicPort_METHODS };
 #undef INTERFACE
 
-#ifdef COBJMACROS
+#if !defined(__cplusplus) || defined(CINTERFACE)
 /*** IUnknown methods ***/
 #define IDirectMusicPort_QueryInterface(p,a,b)            (p)->lpVtbl->QueryInterface(p,a,b)
 #define IDirectMusicPort_AddRef(p)                        (p)->lpVtbl->AddRef(p)
@@ -663,7 +663,7 @@
 DECLARE_INTERFACE_(IDirectMusicThru,IUnknown) { IDirectMusicThru_METHODS };
 #undef INTERFACE
 
-#ifdef COBJMACROS
+#if !defined(__cplusplus) || defined(CINTERFACE)
 /*** IUnknown methods ***/
 #define IDirectMusicThru_QueryInterface(p,a,b)                  (p)->lpVtbl->QueryInterface(p,a,b)
 #define IDirectMusicThru_AddRef(p)                              (p)->lpVtbl->AddRef(p)
@@ -691,7 +691,7 @@
 	DECLARE_INTERFACE_(IReferenceClock,IUnknown) { IReferenceClock_METHODS };
 	#undef INTERFACE
 	
-	#ifdef COBJMACROS
+	#if !defined(__cplusplus) || defined(CINTERFACE)
 	/*** IUnknown methods ***/
 	#define IReferenceClock_QueryInterface(p,a,b)                   (p)->lpVtbl->QueryInterface(p,a,b)
 	#define IReferenceClock_AddRef(p)                               (p)->lpVtbl->AddRef(p)
diff --git a/include/dmusici.h b/include/dmusici.h
index 764191c..2760b44 100644
--- a/include/dmusici.h
+++ b/include/dmusici.h
@@ -799,7 +799,7 @@
 DECLARE_INTERFACE_(IDirectMusicBand,IUnknown) { IDirectMusicBand_METHODS };
 #undef INTERFACE
 
-#ifdef COBJMACROS
+#if !defined(__cplusplus) || defined(CINTERFACE)
 /*** IUnknown methods ***/
 #define IDirectMusicBand_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
 #define IDirectMusicBand_AddRef(p)             (p)->lpVtbl->AddRef(p)
@@ -824,7 +824,7 @@
 DECLARE_INTERFACE_(IDirectMusicObject,IUnknown) { IDirectMusicObject_METHODS };
 #undef INTERFACE
 
-#ifdef COBJMACROS
+#if !defined(__cplusplus) || defined(CINTERFACE)
 /*** IUnknown methods ***/
 #define IDirectMusicObject_QueryInterface(p,a,b)  (p)->lpVtbl->QueryInterface(p,a,b)
 #define IDirectMusicObject_AddRef(p)              (p)->lpVtbl->AddRef(p)
@@ -855,7 +855,7 @@
 DECLARE_INTERFACE_(IDirectMusicLoader,IUnknown) { IDirectMusicLoader_METHODS };
 #undef INTERFACE
 
-#ifdef COBJMACROS
+#if !defined(__cplusplus) || defined(CINTERFACE)
 /*** IUnknown methods ***/
 #define IDirectMusicLoader_QueryInterface(p,a,b)       (p)->lpVtbl->QueryInterface(p,a,b)
 #define IDirectMusicLoader_AddRef(p)                   (p)->lpVtbl->AddRef(p)
@@ -886,7 +886,7 @@
 DECLARE_INTERFACE_(IDirectMusicLoader8,IDirectMusicLoader) { IDirectMusicLoader8_METHODS };
 #undef INTERFACE
 
-#ifdef COBJMACROS
+#if !defined(__cplusplus) || defined(CINTERFACE)
 /*** IUnknown methods ***/
 #define IDirectMusicLoader8_QueryInterface(p,a,b)         (p)->lpVtbl->QueryInterface(p,a,b)
 #define IDirectMusicLoader8_AddRef(p)                     (p)->lpVtbl->AddRef(p)
@@ -919,7 +919,7 @@
 DECLARE_INTERFACE_(IDirectMusicGetLoader,IUnknown) { IDirectMusicGetLoader_METHODS };
 #undef INTERFACE
 
-#ifdef COBJMACROS
+#if !defined(__cplusplus) || defined(CINTERFACE)
 /*** IUnknown methods ***/
 #define IDirectMusicGetLoader_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
 #define IDirectMusicGetLoader_AddRef(p)             (p)->lpVtbl->AddRef(p)
@@ -962,7 +962,7 @@
 DECLARE_INTERFACE_(IDirectMusicSegment,IUnknown) { IDirectMusicSegment_METHODS };
 #undef INTERFACE
 
-#ifdef COBJMACROS
+#if !defined(__cplusplus) || defined(CINTERFACE)
 /*** IUnknown methods ***/
 #define IDirectMusicSegment_QueryInterface(p,a,b)       (p)->lpVtbl->QueryInterface(p,a,b)
 #define IDirectMusicSegment_AddRef(p)                   (p)->lpVtbl->AddRef(p)
@@ -1009,7 +1009,7 @@
 DECLARE_INTERFACE_(IDirectMusicSegment8,IDirectMusicSegment) { IDirectMusicSegment8_METHODS };
 #undef INTERFACE
 
-#ifdef COBJMACROS
+#if !defined(__cplusplus) || defined(CINTERFACE)
 /*** IUnknown methods ***/
 #define IDirectMusicSegment8_QueryInterface(p,a,b)       (p)->lpVtbl->QueryInterface(p,a,b)
 #define IDirectMusicSegment8_AddRef(p)                   (p)->lpVtbl->AddRef(p)
@@ -1062,7 +1062,7 @@
 DECLARE_INTERFACE_(IDirectMusicSegmentState,IUnknown) { IDirectMusicSegmentState_METHODS };
 #undef INTERFACE
 
-#ifdef COBJMACROS
+#if !defined(__cplusplus) || defined(CINTERFACE)
 /*** IUnknown methods ***/
 #define IDirectMusicSegmentState_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
 #define IDirectMusicSegmentState_AddRef(p)             (p)->lpVtbl->AddRef(p)
@@ -1088,7 +1088,7 @@
 DECLARE_INTERFACE_(IDirectMusicSegmentState8,IDirectMusicSegmentState) { IDirectMusicSegmentState8_METHODS };
 #undef INTERFACE
 
-#ifdef COBJMACROS
+#if !defined(__cplusplus) || defined(CINTERFACE)
 /*** IUnknown methods ***/
 #define IDirectMusicSegmentState8_QueryInterface(p,a,b)            (p)->lpVtbl->QueryInterface(p,a,b)
 #define IDirectMusicSegmentState8_AddRef(p)                        (p)->lpVtbl->AddRef(p)
@@ -1119,7 +1119,7 @@
 DECLARE_INTERFACE_(IDirectMusicAudioPath,IUnknown) { IDirectMusicAudioPath_METHODS };
 #undef INTERFACE
 
-#ifdef COBJMACROS
+#if !defined(__cplusplus) || defined(CINTERFACE)
 /*** IUnknown methods ***/
 #define IDirectMusicAudioPath_QueryInterface(p,a,b)            (p)->lpVtbl->QueryInterface(p,a,b)
 #define IDirectMusicAudioPath_AddRef(p)                        (p)->lpVtbl->AddRef(p)
@@ -1183,7 +1183,7 @@
 DECLARE_INTERFACE_(IDirectMusicPerformance,IUnknown) { IDirectMusicPerformance_METHODS };
 #undef INTERFACE
 
-#ifdef COBJMACROS
+#if !defined(__cplusplus) || defined(CINTERFACE)
 /*** IUnknown methods ***/
 #define IDirectMusicPerformance_QueryInterface(p,a,b)                 (p)->lpVtbl->QueryInterface(p,a,b)
 #define IDirectMusicPerformance_AddRef(p)                             (p)->lpVtbl->AddRef(p)
@@ -1252,7 +1252,7 @@
 DECLARE_INTERFACE_(IDirectMusicPerformance8,IDirectMusicPerformance) { IDirectMusicPerformance8_METHODS };
 #undef INTERFACE
 
-#ifdef COBJMACROS
+#if !defined(__cplusplus) || defined(CINTERFACE)
 /*** IUnknown methods ***/
 #define IDirectMusicPerformance8_QueryInterface(p,a,b)                 (p)->lpVtbl->QueryInterface(p,a,b)
 #define IDirectMusicPerformance8_AddRef(p)                             (p)->lpVtbl->AddRef(p)
@@ -1326,7 +1326,7 @@
 DECLARE_INTERFACE_(IDirectMusicGraph,IUnknown) { IDirectMusicGraph_METHODS };
 #undef INTERFACE
 
-#ifdef COBJMACROS
+#if !defined(__cplusplus) || defined(CINTERFACE)
 /*** IUnknown methods ***/
 #define IDirectMusicGraph_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
 #define IDirectMusicGraph_AddRef(p)             (p)->lpVtbl->AddRef(p)
@@ -1360,7 +1360,7 @@
 DECLARE_INTERFACE_(IDirectMusicStyle,IUnknown) { IDirectMusicStyle_METHODS };
 #undef INTERFACE
 
-#ifdef COBJMACROS
+#if !defined(__cplusplus) || defined(CINTERFACE)
 /*** IUnknown methods ***/
 #define IDirectMusicStyle_QueryInterface(p,a,b)             (p)->lpVtbl->QueryInterface(p,a,b)
 #define IDirectMusicStyle_AddRef(p)                         (p)->lpVtbl->AddRef(p)
@@ -1391,7 +1391,7 @@
 DECLARE_INTERFACE_(IDirectMusicStyle8,IDirectMusicStyle) { IDirectMusicStyle8_METHODS };
 #undef INTERFACE
 
-#ifdef COBJMACROS
+#if !defined(__cplusplus) || defined(CINTERFACE)
 /*** IUnknown methods ***/
 #define IDirectMusicStyle8_QueryInterface(p,a,b)             (p)->lpVtbl->QueryInterface(p,a,b)
 #define IDirectMusicStyle8_AddRef(p)                         (p)->lpVtbl->AddRef(p)
@@ -1424,7 +1424,7 @@
 DECLARE_INTERFACE_(IDirectMusicChordMap,IUnknown) { IDirectMusicChordMap_METHODS };
 #undef INTERFACE
 
-#ifdef COBJMACROS
+#if !defined(__cplusplus) || defined(CINTERFACE)
 /*** IUnknown methods ***/
 #define IDirectMusicChordMap_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
 #define IDirectMusicChordMap_AddRef(p)             (p)->lpVtbl->AddRef(p)
@@ -1450,7 +1450,7 @@
 DECLARE_INTERFACE_(IDirectMusicComposer,IUnknown) { IDirectMusicComposer_METHODS };
 #undef INTERFACE
 
-#ifdef COBJMACROS
+#if !defined(__cplusplus) || defined(CINTERFACE)
 /*** IUnknown methods ***/
 #define IDirectMusicComposer_QueryInterface(p,a,b)                      (p)->lpVtbl->QueryInterface(p,a,b)
 #define IDirectMusicComposer_AddRef(p)                                  (p)->lpVtbl->AddRef(p)
@@ -1478,7 +1478,7 @@
 DECLARE_INTERFACE_(IDirectMusicPatternTrack,IUnknown) { IDirectMusicPatternTrack_METHODS };
 #undef INTERFACE
 
-#ifdef COBJMACROS
+#if !defined(__cplusplus) || defined(CINTERFACE)
 /*** IUnknown methods ***/
 #define IDirectMusicPatternTrack_QueryInterface(p,a,b)         (p)->lpVtbl->QueryInterface(p,a,b)
 #define IDirectMusicPatternTrack_AddRef(p)                     (p)->lpVtbl->AddRef(p)
@@ -1510,7 +1510,7 @@
 DECLARE_INTERFACE_(IDirectMusicScript,IUnknown) { IDirectMusicScript_METHODS };
 #undef INTERFACE
 
-#ifdef COBJMACROS
+#if !defined(__cplusplus) || defined(CINTERFACE)
 /*** IUnknown methods ***/
 #define IDirectMusicScript_QueryInterface(p,a,b)               (p)->lpVtbl->QueryInterface(p,a,b)
 #define IDirectMusicScript_AddRef(p)                           (p)->lpVtbl->AddRef(p)
@@ -1540,7 +1540,7 @@
 DECLARE_INTERFACE_(IDirectMusicContainer,IUnknown) { IDirectMusicContainer_METHODS };
 #undef INTERFACE
 
-#ifdef COBJMACROS
+#if !defined(__cplusplus) || defined(CINTERFACE)
 /*** IUnknown methods ***/
 #define IDirectMusicContainer_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
 #define IDirectMusicContainer_AddRef(p)             (p)->lpVtbl->AddRef(p)
diff --git a/include/dmusics.h b/include/dmusics.h
index 9ba78b3..55e8b1c 100644
--- a/include/dmusics.h
+++ b/include/dmusics.h
@@ -97,7 +97,7 @@
 DECLARE_INTERFACE_(IDirectMusicSynth,IUnknown) { IDirectMusicSynth_METHODS };
 #undef INTERFACE
 
-#ifdef COBJMACROS
+#if !defined(__cplusplus) || defined(CINTERFACE)
 /*** IUnknown methods ***/
 #define IDirectMusicSynth_QueryInterface(p,a,b)       (p)->lpVtbl->QueryInterface(p,a,b)
 #define IDirectMusicSynth_AddRef(p)                   (p)->lpVtbl->AddRef(p)
@@ -138,7 +138,7 @@
 DECLARE_INTERFACE_(IDirectMusicSynth8,IDirectMusicSynth) { IDirectMusicSynth8_METHODS };
 #undef INTERFACE
 
-#ifdef COBJMACROS
+#if !defined(__cplusplus) || defined(CINTERFACE)
 /*** IUnknown methods ***/
 #define IDirectMusicSynth8_QueryInterface(p,a,b)            (p)->lpVtbl->QueryInterface(p,a,b)
 #define IDirectMusicSynth8_AddRef(p)                        (p)->lpVtbl->AddRef(p)
@@ -188,7 +188,7 @@
 DECLARE_INTERFACE_(IDirectMusicSynthSink,IUnknown) { IDirectMusicSynthSink_METHODS };
 #undef INTERFACE
 
-#ifdef COBJMACROS
+#if !defined(__cplusplus) || defined(CINTERFACE)
 /*** IUnknown methods ***/
 #define IDirectMusicSynthSink_QueryInterface(p,a,b)      (p)->lpVtbl->QueryInterface(p,a,b)
 #define IDirectMusicSynthSink_AddRef(p)                  (p)->lpVtbl->AddRef(p)
diff --git a/include/dxfile.h b/include/dxfile.h
index 6c83007..c690ee5 100644
--- a/include/dxfile.h
+++ b/include/dxfile.h
@@ -70,7 +70,7 @@
 DECLARE_INTERFACE_(IDirectXFile,IUnknown) { IDirectXFile_METHODS };
 #undef INTERFACE
 
-#ifdef COBJMACROS
+#if !defined(__cplusplus) || defined(CINTERFACE)
     /*** IUnknown methods ***/
 #define IDirectXFile_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
 #define IDirectXFile_AddRef(p)             (p)->lpVtbl->AddRef(p)
@@ -90,7 +90,7 @@
 DECLARE_INTERFACE_(IDirectXFileEnumObject,IUnknown) { IDirectXFileEnumObject_METHODS };
 #undef INTERFACE
 
-#ifdef COBJMACROS
+#if !defined(__cplusplus) || defined(CINTERFACE)
     /*** IUnknown methods ***/
 #define IDirectXFileEnumObject_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
 #define IDirectXFileEnumObject_AddRef(p)             (p)->lpVtbl->AddRef(p)
@@ -110,7 +110,7 @@
 DECLARE_INTERFACE_(IDirectXFileSaveObject,IUnknown) { IDirectXFileSaveObject_METHODS };
 #undef INTERFACE
 
-#ifdef COBJMACROS
+#if !defined(__cplusplus) || defined(CINTERFACE)
     /*** IUnknown methods ***/
 #define IDirectXFileSaveObject_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
 #define IDirectXFileSaveObject_AddRef(p)             (p)->lpVtbl->AddRef(p)
@@ -132,7 +132,7 @@
 DECLARE_INTERFACE_(IDirectXFileObject,IUnknown) { IDirectXFileObject_METHODS };
 #undef INTERFACE
 
-#ifdef COBJMACROS
+#if !defined(__cplusplus) || defined(CINTERFACE)
     /*** IUnknown methods ***/
 #define IDirectXFileObject_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
 #define IDirectXFileObject_AddRef(p)             (p)->lpVtbl->AddRef(p)
@@ -155,7 +155,7 @@
 DECLARE_INTERFACE_(IDirectXFileData,IDirectXFileObject) { IDirectXFileData_METHODS };
 #undef INTERFACE
 
-#ifdef COBJMACROS
+#if !defined(__cplusplus) || defined(CINTERFACE)
     /*** IUnknown methods ***/
 #define IDirectXFileData_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
 #define IDirectXFileData_AddRef(p)             (p)->lpVtbl->AddRef(p)
@@ -180,7 +180,7 @@
 DECLARE_INTERFACE_(IDirectXFileDataReference,IDirectXFileObject) { IDirectXFileDataReference_METHODS };
 #undef INTERFACE
 
-#ifdef COBJMACROS
+#if !defined(__cplusplus) || defined(CINTERFACE)
     /*** IUnknown methods ***/
 #define IDirectXFileData_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
 #define IDirectXFileData_AddRef(p)             (p)->lpVtbl->AddRef(p)
@@ -202,7 +202,7 @@
 DECLARE_INTERFACE_(IDirectXFileBinary,IDirectXFileObject) { IDirectXFileBinary_METHODS };
 #undef INTERFACE
 
-#ifdef COBJMACROS
+#if !defined(__cplusplus) || defined(CINTERFACE)
     /*** IUnknown methods ***/
 #define IDirectXFileBinary_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
 #define IDirectXFileBinary_AddRef(p)             (p)->lpVtbl->AddRef(p)
diff --git a/include/mapidefs.h b/include/mapidefs.h
index 1f4313c..e37655e 100644
--- a/include/mapidefs.h
+++ b/include/mapidefs.h
@@ -799,7 +799,7 @@
 DECLARE_INTERFACE_(IMAPITable,IUnknown) { IMAPITable_METHODS };
 #undef INTERFACE
 
-#ifdef COBJMACROS
+#if !defined(__cplusplus) || defined(CINTERFACE)
         /*** IUnknown methods ***/
 #define IMAPITable_QueryInterface(p,a,b)         (p)->lpVtbl->QueryInterface(p,a,b)
 #define IMAPITable_AddRef(p)                     (p)->lpVtbl->AddRef(p)
@@ -840,7 +840,7 @@
 DECLARE_INTERFACE_(IMAPIAdviseSink,IUnknown) { IMAPIAdviseSink_METHODS };
 #undef INTERFACE
 
-#ifdef COBJMACROS
+#if !defined(__cplusplus) || defined(CINTERFACE)
         /*** IUnknown methods ***/
 #define IMAPIAdviseSink_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
 #define IMAPIAdviseSink_AddRef(p)             (p)->lpVtbl->AddRef(p)
@@ -873,7 +873,7 @@
 DECLARE_INTERFACE_(IMAPIProp,IUnknown) { IMAPIProp_METHODS };
 #undef INTERFACE
 
-#ifdef COBJMACROS
+#if !defined(__cplusplus) || defined(CINTERFACE)
         /*** IUnknown methods ***/
 #define IMAPIProp_QueryInterface(p,a,b)        (p)->lpVtbl->QueryInterface(p,a,b)
 #define IMAPIProp_AddRef(p)                    (p)->lpVtbl->AddRef(p)
diff --git a/include/mapiutil.h b/include/mapiutil.h
index 86983b5..4f6d147 100644
--- a/include/mapiutil.h
+++ b/include/mapiutil.h
@@ -139,7 +139,7 @@
 DECLARE_INTERFACE_(ITableData,IUnknown) { ITableData_METHODS };
 #undef INTERFACE
 
-#ifdef COBJMACROS
+#if !defined(__cplusplus) || defined(CINTERFACE)
         /*** IUnknown methods ***/
 #define ITableData_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
 #define ITableData_AddRef(p)             (p)->lpVtbl->AddRef(p)
@@ -223,7 +223,7 @@
 DECLARE_INTERFACE_(IPropData,IMAPIProp) { IPropData_METHODS };
 #undef INTERFACE
 
-#ifdef COBJMACROS
+#if !defined(__cplusplus) || defined(CINTERFACE)
         /*** IUnknown methods ***/
 #define IPropData_QueryInterface(p,a,b)        (p)->lpVtbl->QueryInterface(p,a,b)
 #define IPropData_AddRef(p)                    (p)->lpVtbl->AddRef(p)
diff --git a/include/mapix.h b/include/mapix.h
index 189c159..7db100a 100644
--- a/include/mapix.h
+++ b/include/mapix.h
@@ -135,7 +135,7 @@
 DECLARE_INTERFACE_(IMAPISession,IUnknown) { IMAPISession_METHODS };
 #undef INTERFACE
 
-#ifdef COBJMACROS
+#if !defined(__cplusplus) || defined(CINTERFACE)
         /*** IUnknown methods ***/
 #define IMAPISession_QueryInterface(p,a,b)          (p)->lpVtbl->QueryInterface(p,a,b)
 #define IMAPISession_AddRef(p)                      (p)->lpVtbl->AddRef(p)
diff --git a/include/oledlg.h b/include/oledlg.h
index c5a88e5..d2be3bc 100644
--- a/include/oledlg.h
+++ b/include/oledlg.h
@@ -696,7 +696,7 @@
 DECL_WINELIB_TYPE_AW(POLEUILINKCONTAINER)
 DECL_WINELIB_TYPE_AW(LPOLEUILINKCONTAINER)
 
-#ifdef COBJMACROS
+#if !defined(__cplusplus) || defined(CINTERFACE)
 /*** IUnknown methods ***/
 #define IOleUILinkContainer_QueryInterface(p,a,b)          (p)->lpVtbl->QueryInterface(p,a,b)
 #define IOleUILinkContainer_AddRef(p)                      (p)->lpVtbl->AddRef(p)
@@ -734,7 +734,7 @@
 DECL_WINELIB_TYPE_AW(POLEUILINKINFO)
 DECL_WINELIB_TYPE_AW(LPOLEUILINKINFO)
 
-#ifdef COBJMACROS
+#if !defined(__cplusplus) || defined(CINTERFACE)
 /*** IUnknown methods ***/
 #define IOleUILinkInfo_QueryInterface(p,a,b)          (p)->lpVtbl->QueryInterface(p,a,b)
 #define IOleUILinkInfo_AddRef(p)                      (p)->lpVtbl->AddRef(p)
@@ -788,7 +788,7 @@
 DECL_WINELIB_TYPE_AW(POLEUIOBJINFO)
 DECL_WINELIB_TYPE_AW(LPOLEUIOBJINFO)
 
-#ifdef COBJMACROS
+#if !defined(__cplusplus) || defined(CINTERFACE)
 /*** IUnknown methods ***/
 #define IOleUIObjInfo_QueryInterface(p,a,b)            (p)->lpVtbl->QueryInterface(p,a,b)
 #define IOleUIObjInfo_AddRef(p)                        (p)->lpVtbl->AddRef(p)
diff --git a/include/shlobj.h b/include/shlobj.h
index 0c51861..5d4295f 100644
--- a/include/shlobj.h
+++ b/include/shlobj.h
@@ -192,7 +192,7 @@
 DECLARE_INTERFACE_(IShellIcon, IUnknown) { IShellIcon_METHODS };
 #undef INTERFACE
 
-#ifdef COBJMACROS
+#if !defined(__cplusplus) || defined(CINTERFACE)
 /*** IUnknown methods ***/
 #define IShellIcon_QueryInterface(p,a,b)      (p)->lpVtbl->QueryInterface(p,a,b)
 #define IShellIcon_AddRef(p)                  (p)->lpVtbl->AddRef(p)
@@ -809,7 +809,7 @@
 DECLARE_INTERFACE_(IShellChangeNotify, IUnknown) { IShellChangeNotify_METHODS };
 #undef INTERFACE
 
-#ifdef COBJMACROS
+#if !defined(__cplusplus) || defined(CINTERFACE)
 /*** IUnknown methods ***/
 #define IShellChangeNotify_QueryInterface(p,a,b)      (p)->lpVtbl->QueryInterface(p,a,b)
 #define IShellChangeNotify_AddRef(p)                  (p)->lpVtbl->AddRef(p)
diff --git a/include/shlwapi.h b/include/shlwapi.h
index b09b825..e52f0a8 100644
--- a/include/shlwapi.h
+++ b/include/shlwapi.h
@@ -255,7 +255,7 @@
 DECLARE_INTERFACE_(IQueryAssociations,IUnknown) { IQueryAssociations_METHODS };
 #undef INTERFACE
 
-#ifdef COBJMACROS
+#if !defined(__cplusplus) || defined(CINTERFACE)
 #define IQueryAssociations_QueryInterface(p,a,b)   (p)->lpVtbl->QueryInterface(p,a,b)
 #define IQueryAssociations_AddRef(p)               (p)->lpVtbl->AddRef(p)
 #define IQueryAssociations_Release(p)              (p)->lpVtbl->Release(p)
diff --git a/include/vfw.h b/include/vfw.h
index 6e62f37..94c323c 100644
--- a/include/vfw.h
+++ b/include/vfw.h
@@ -1007,7 +1007,7 @@
 DECLARE_INTERFACE_(IAVIStream, IUnknown) { IAVIStream_METHODS };
 #undef INTERFACE
 
-#ifdef COBJMACROS
+#if !defined(__cplusplus) || defined(CINTERFACE)
 /*** IUnknown methods ***/
 #define IAVIStream_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
 #define IAVIStream_AddRef(p)             (p)->lpVtbl->AddRef(p)
@@ -1121,7 +1121,7 @@
 DECLARE_INTERFACE_(IAVIStreaming, IUnknown) { IAVIStreaming_METHODS };
 #undef INTERFACE
 
-#ifdef COBJMACROS
+#if !defined(__cplusplus) || defined(CINTERFACE)
 /*** IUnknown methods ***/
 #define IAVIStreaming_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
 #define IAVIStreaming_AddRef(p)             (p)->lpVtbl->AddRef(p)
@@ -1145,7 +1145,7 @@
 DECLARE_INTERFACE_(IAVIEditStream,IUnknown) { IAVIEditStream_METHODS };
 #undef INTERFACE
 
-#ifdef COBJMACROS
+#if !defined(__cplusplus) || defined(CINTERFACE)
 /*** IUnknown methods ***/
 #define IAVIEditStream_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
 #define IAVIEditStream_AddRef(p)             (p)->lpVtbl->AddRef(p)
@@ -1194,7 +1194,7 @@
 DECLARE_INTERFACE_(IAVIFile,IUnknown) { IAVIFile_METHODS };
 #undef INTERFACE
 
-#ifdef COBJMACROS
+#if !defined(__cplusplus) || defined(CINTERFACE)
 /*** IUnknown methods ***/
 #define IAVIFile_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
 #define IAVIFile_AddRef(p)             (p)->lpVtbl->AddRef(p)
@@ -1242,7 +1242,7 @@
 DECLARE_INTERFACE_(IGetFrame,IUnknown) { IGetFrame_METHODS };
 #undef INTERFACE
 
-#ifdef COBJMACROS
+#if !defined(__cplusplus) || defined(CINTERFACE)
 /*** IUnknown methods ***/
 #define IGetFrame_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
 #define IGetFrame_AddRef(p)             (p)->lpVtbl->AddRef(p)