Converted oleidl.h to IDL.

diff --git a/dlls/ole32/datacache.c b/dlls/ole32/datacache.c
index ec2ac42..8ae1dca 100644
--- a/dlls/ole32/datacache.c
+++ b/dlls/ole32/datacache.c
@@ -275,7 +275,7 @@
 	    HDC              hdcDraw,
 	    LPCRECTL         lprcBounds,
 	    LPCRECTL         lprcWBounds,
-	    IVO_ContCallback pfnContinue,
+	    BOOL  (CALLBACK *pfnContinue)(ULONG_PTR dwContinue),
 	    DWORD            dwContinue);
 static HRESULT WINAPI DataCache_GetColorSet(
             IViewObject2*   iface,
@@ -1567,7 +1567,7 @@
 	    HDC              hdcDraw,
 	    LPCRECTL         lprcBounds,
 	    LPCRECTL         lprcWBounds,
-	    IVO_ContCallback pfnContinue,
+	    BOOL  (CALLBACK *pfnContinue)(ULONG_PTR dwContinue),
 	    DWORD            dwContinue)
 {
   PresentationDataHeader presData;
diff --git a/dlls/shell32/shlview.c b/dlls/shell32/shlview.c
index 5c7bf51..e486d39 100644
--- a/dlls/shell32/shlview.c
+++ b/dlls/shell32/shlview.c
@@ -2203,7 +2203,7 @@
 	HDC hdcDraw,
 	LPCRECTL lprcBounds,
 	LPCRECTL lprcWBounds,
-	IVO_ContCallback pfnContinue,
+	BOOL (CALLBACK *pfnContinue)(ULONG_PTR dwContinue),
 	DWORD dwContinue)
 {
 
diff --git a/include/Makefile.in b/include/Makefile.in
index b5566ed..2ea2f23 100644
--- a/include/Makefile.in
+++ b/include/Makefile.in
@@ -8,6 +8,7 @@
 	comcat.idl \
 	oaidl.idl \
 	objidl.idl \
+	oleidl.idl \
 	strmif.idl \
 	unknwn.idl \
 	wtypes.idl
@@ -126,7 +127,6 @@
 	oleauto.h \
 	olectl.h \
 	oledlg.h \
-	oleidl.h \
 	pktdef.h \
 	poppack.h \
 	prsht.h \
@@ -241,21 +241,16 @@
 	debug.h \
 	exception.h \
 	library.h \
-	obj_cache.h \
 	obj_commdlgbrowser.h \
 	obj_connection.h \
 	obj_contextmenu.h \
 	obj_control.h \
 	obj_dockingwindowframe.h \
-	obj_dragdrop.h \
 	obj_dragdrophelper.h \
 	obj_enumidlist.h \
 	obj_extracticon.h \
-	obj_inplace.h \
 	obj_olefont.h \
-	obj_oleobj.h \
 	obj_oleundo.h \
-	obj_oleview.h \
 	obj_picture.h \
 	obj_property.h \
 	obj_shellbrowser.h \
diff --git a/include/oleidl.h b/include/oleidl.h
index 3c33e71..065d119 100644
--- a/include/oleidl.h
+++ b/include/oleidl.h
@@ -1,40 +1,3902 @@
-/*
- * Copyright (C) 1999 Francis Beaudet
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- */
-
+/*** Autogenerated by WIDL 0.1 from oleidl.idl - Do not edit ***/
 #include <rpc.h>
 #include <rpcndr.h>
-#ifndef COM_NO_WINDOWS_H
-#include <windows.h>
-#include <ole2.h>
+
+#ifndef __WIDL_OLEIDL_H
+#define __WIDL_OLEIDL_H
+#ifdef __cplusplus
+extern "C" {
+#endif
+#include <objidl.h>
+typedef enum tagOLERENDER {
+    OLERENDER_NONE = 0,
+    OLERENDER_DRAW = 1,
+    OLERENDER_FORMAT = 2,
+    OLERENDER_ASIS = 3
+} OLERENDER, *LPOLERENDER;
+
+typedef struct tagOBJECTDESCRIPTOR {
+    ULONG cbSize;
+    CLSID clsid;
+    DWORD dwDrawAspect;
+    SIZEL sizel;
+    POINTL pointl;
+    DWORD dwStatus;
+    DWORD dwFullUserTypeName;
+    DWORD dwSrcOfCopy;
+} OBJECTDESCRIPTOR, *POBJECTDESCRIPTOR, *LPOBJECTDESCRIPTOR, LINKSRCDESCRIPTOR, *PLINKSRCDESCRIPTOR, *LPLINKSRCDESCRIPTOR;
+
+#ifndef __IOleWindow_FWD_DEFINED__
+#define __IOleWindow_FWD_DEFINED__
+typedef struct IOleWindow IOleWindow;
 #endif
 
-#ifndef __WINE_OLEIDL_H
-#define __WINE_OLEIDL_H
+typedef IOleWindow *LPOLEWINDOW;
 
-#if defined(__WINESRC__) && !defined(INITGUID) && !defined(__WINE_INCLUDE_OLEIDL)
-#error DO NOT INCLUDE DIRECTLY
+/*****************************************************************************
+ * IOleWindow interface
+ */
+#ifndef __IOleWindow_INTERFACE_DEFINED__
+#define __IOleWindow_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IOleWindow, 0x00000114, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+struct IOleWindow : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE GetWindow(
+        HWND* phwnd) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE ContextSensitiveHelp(
+        BOOL fEnterMode) = 0;
+
+};
+#else
+typedef struct IOleWindowVtbl IOleWindowVtbl;
+struct IOleWindow {
+    const IOleWindowVtbl* lpVtbl;
+};
+struct IOleWindowVtbl {
+    ICOM_MSVTABLE_COMPAT_FIELDS
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IOleWindow* This,
+        REFIID riid,
+        void** ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IOleWindow* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IOleWindow* This);
+
+    /*** IOleWindow methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetWindow)(
+        IOleWindow* This,
+        HWND* phwnd);
+
+    HRESULT (STDMETHODCALLTYPE *ContextSensitiveHelp)(
+        IOleWindow* This,
+        BOOL fEnterMode);
+
+};
+
+/*** IUnknown methods ***/
+#define IOleWindow_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define IOleWindow_AddRef(p) (p)->lpVtbl->AddRef(p)
+#define IOleWindow_Release(p) (p)->lpVtbl->Release(p)
+/*** IOleWindow methods ***/
+#define IOleWindow_GetWindow(p,a) (p)->lpVtbl->GetWindow(p,a)
+#define IOleWindow_ContextSensitiveHelp(p,a) (p)->lpVtbl->ContextSensitiveHelp(p,a)
+
 #endif
 
-#include <objbase.h>
-#include <wine/obj_inplace.h>
-#include <wine/obj_cache.h>
-#include <wine/obj_oleobj.h>
-#include <wine/obj_oleview.h>
-#include <wine/obj_dragdrop.h>
+#define IOleWindow_METHODS \
+    ICOM_MSVTABLE_COMPAT_FIELDS \
+    /*** IUnknown methods ***/ \
+    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE; \
+    STDMETHOD_(ULONG,Release)(THIS) PURE; \
+    /*** IOleWindow methods ***/ \
+    STDMETHOD_(HRESULT,GetWindow)(THIS_ HWND* phwnd) PURE; \
+    STDMETHOD_(HRESULT,ContextSensitiveHelp)(THIS_ BOOL fEnterMode) PURE;
 
-#endif /* __WINE_OLEIDL_H */
+HRESULT CALLBACK IOleWindow_GetWindow_Proxy(
+    IOleWindow* This,
+    HWND* phwnd);
+void __RPC_STUB IOleWindow_GetWindow_Stub(
+    struct IRpcStubBuffer* This,
+    struct IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT CALLBACK IOleWindow_ContextSensitiveHelp_Proxy(
+    IOleWindow* This,
+    BOOL fEnterMode);
+void __RPC_STUB IOleWindow_ContextSensitiveHelp_Stub(
+    struct IRpcStubBuffer* This,
+    struct IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IOleWindow_INTERFACE_DEFINED__ */
+
+#ifndef __IOleInPlaceObject_FWD_DEFINED__
+#define __IOleInPlaceObject_FWD_DEFINED__
+typedef struct IOleInPlaceObject IOleInPlaceObject;
+#endif
+
+typedef IOleInPlaceObject *LPOLEINPLACEOBJECT;
+
+/*****************************************************************************
+ * IOleInPlaceObject interface
+ */
+#ifndef __IOleInPlaceObject_INTERFACE_DEFINED__
+#define __IOleInPlaceObject_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IOleInPlaceObject, 0x00000113, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+struct IOleInPlaceObject : public IOleWindow
+{
+    virtual HRESULT STDMETHODCALLTYPE InPlaceDeactivate(
+        ) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE UIDeactivate(
+        ) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetObjectRects(
+        LPCRECT lprcPosRect,
+        LPCRECT lprcClipRect) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE ReactivateAndUndo(
+        ) = 0;
+
+};
+#else
+typedef struct IOleInPlaceObjectVtbl IOleInPlaceObjectVtbl;
+struct IOleInPlaceObject {
+    const IOleInPlaceObjectVtbl* lpVtbl;
+};
+struct IOleInPlaceObjectVtbl {
+    ICOM_MSVTABLE_COMPAT_FIELDS
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IOleInPlaceObject* This,
+        REFIID riid,
+        void** ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IOleInPlaceObject* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IOleInPlaceObject* This);
+
+    /*** IOleWindow methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetWindow)(
+        IOleInPlaceObject* This,
+        HWND* phwnd);
+
+    HRESULT (STDMETHODCALLTYPE *ContextSensitiveHelp)(
+        IOleInPlaceObject* This,
+        BOOL fEnterMode);
+
+    /*** IOleInPlaceObject methods ***/
+    HRESULT (STDMETHODCALLTYPE *InPlaceDeactivate)(
+        IOleInPlaceObject* This);
+
+    HRESULT (STDMETHODCALLTYPE *UIDeactivate)(
+        IOleInPlaceObject* This);
+
+    HRESULT (STDMETHODCALLTYPE *SetObjectRects)(
+        IOleInPlaceObject* This,
+        LPCRECT lprcPosRect,
+        LPCRECT lprcClipRect);
+
+    HRESULT (STDMETHODCALLTYPE *ReactivateAndUndo)(
+        IOleInPlaceObject* This);
+
+};
+
+/*** IUnknown methods ***/
+#define IOleInPlaceObject_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define IOleInPlaceObject_AddRef(p) (p)->lpVtbl->AddRef(p)
+#define IOleInPlaceObject_Release(p) (p)->lpVtbl->Release(p)
+/*** IOleWindow methods ***/
+#define IOleInPlaceObject_GetWindow(p,a) (p)->lpVtbl->GetWindow(p,a)
+#define IOleInPlaceObject_ContextSensitiveHelp(p,a) (p)->lpVtbl->ContextSensitiveHelp(p,a)
+/*** IOleInPlaceObject methods ***/
+#define IOleInPlaceObject_InPlaceDeactivate(p) (p)->lpVtbl->InPlaceDeactivate(p)
+#define IOleInPlaceObject_UIDeactivate(p) (p)->lpVtbl->UIDeactivate(p)
+#define IOleInPlaceObject_SetObjectRects(p,a,b) (p)->lpVtbl->SetObjectRects(p,a,b)
+#define IOleInPlaceObject_ReactivateAndUndo(p) (p)->lpVtbl->ReactivateAndUndo(p)
+
+#endif
+
+#define IOleInPlaceObject_METHODS \
+    ICOM_MSVTABLE_COMPAT_FIELDS \
+    /*** IUnknown methods ***/ \
+    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE; \
+    STDMETHOD_(ULONG,Release)(THIS) PURE; \
+    /*** IOleWindow methods ***/ \
+    STDMETHOD_(HRESULT,GetWindow)(THIS_ HWND* phwnd) PURE; \
+    STDMETHOD_(HRESULT,ContextSensitiveHelp)(THIS_ BOOL fEnterMode) PURE; \
+    /*** IOleInPlaceObject methods ***/ \
+    STDMETHOD_(HRESULT,InPlaceDeactivate)(THIS) PURE; \
+    STDMETHOD_(HRESULT,UIDeactivate)(THIS) PURE; \
+    STDMETHOD_(HRESULT,SetObjectRects)(THIS_ LPCRECT lprcPosRect, LPCRECT lprcClipRect) PURE; \
+    STDMETHOD_(HRESULT,ReactivateAndUndo)(THIS) PURE;
+
+HRESULT CALLBACK IOleInPlaceObject_InPlaceDeactivate_Proxy(
+    IOleInPlaceObject* This);
+void __RPC_STUB IOleInPlaceObject_InPlaceDeactivate_Stub(
+    struct IRpcStubBuffer* This,
+    struct IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT CALLBACK IOleInPlaceObject_UIDeactivate_Proxy(
+    IOleInPlaceObject* This);
+void __RPC_STUB IOleInPlaceObject_UIDeactivate_Stub(
+    struct IRpcStubBuffer* This,
+    struct IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT CALLBACK IOleInPlaceObject_SetObjectRects_Proxy(
+    IOleInPlaceObject* This,
+    LPCRECT lprcPosRect,
+    LPCRECT lprcClipRect);
+void __RPC_STUB IOleInPlaceObject_SetObjectRects_Stub(
+    struct IRpcStubBuffer* This,
+    struct IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT CALLBACK IOleInPlaceObject_ReactivateAndUndo_Proxy(
+    IOleInPlaceObject* This);
+void __RPC_STUB IOleInPlaceObject_ReactivateAndUndo_Stub(
+    struct IRpcStubBuffer* This,
+    struct IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IOleInPlaceObject_INTERFACE_DEFINED__ */
+
+#ifndef __IOleInPlaceUIWindow_FWD_DEFINED__
+#define __IOleInPlaceUIWindow_FWD_DEFINED__
+typedef struct IOleInPlaceUIWindow IOleInPlaceUIWindow;
+#endif
+
+#ifndef __IOleInPlaceActiveObject_FWD_DEFINED__
+#define __IOleInPlaceActiveObject_FWD_DEFINED__
+typedef struct IOleInPlaceActiveObject IOleInPlaceActiveObject;
+#endif
+
+typedef IOleInPlaceActiveObject *LPOLEINPLACEACTIVEOBJECT;
+
+struct tagMSG;
+/*****************************************************************************
+ * IOleInPlaceActiveObject interface
+ */
+#ifndef __IOleInPlaceActiveObject_INTERFACE_DEFINED__
+#define __IOleInPlaceActiveObject_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IOleInPlaceActiveObject, 0x00000117, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+struct IOleInPlaceActiveObject : public IOleWindow
+{
+    virtual HRESULT STDMETHODCALLTYPE TranslateAccelerator(
+        struct tagMSG {
+            HWND hwnd;
+            UINT message;
+            WPARAM wParam;
+            LPARAM lParam;
+            DWORD time;
+            POINT pt;
+        }* lpmsg) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE OnFrameWindowActivate(
+        BOOL fActivate) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE OnDocWindowActivate(
+        BOOL fActivate) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE ResizeBorder(
+        LPCRECT prcBorder,
+        IOleInPlaceUIWindow* pUIWindow,
+        BOOL fFrameWindow) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE EnableModeless(
+        BOOL fEnable) = 0;
+
+};
+#else
+typedef struct IOleInPlaceActiveObjectVtbl IOleInPlaceActiveObjectVtbl;
+struct IOleInPlaceActiveObject {
+    const IOleInPlaceActiveObjectVtbl* lpVtbl;
+};
+struct IOleInPlaceActiveObjectVtbl {
+    ICOM_MSVTABLE_COMPAT_FIELDS
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IOleInPlaceActiveObject* This,
+        REFIID riid,
+        void** ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IOleInPlaceActiveObject* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IOleInPlaceActiveObject* This);
+
+    /*** IOleWindow methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetWindow)(
+        IOleInPlaceActiveObject* This,
+        HWND* phwnd);
+
+    HRESULT (STDMETHODCALLTYPE *ContextSensitiveHelp)(
+        IOleInPlaceActiveObject* This,
+        BOOL fEnterMode);
+
+    /*** IOleInPlaceActiveObject methods ***/
+    HRESULT (STDMETHODCALLTYPE *TranslateAccelerator)(
+        IOleInPlaceActiveObject* This,
+        struct tagMSG* lpmsg);
+
+    HRESULT (STDMETHODCALLTYPE *OnFrameWindowActivate)(
+        IOleInPlaceActiveObject* This,
+        BOOL fActivate);
+
+    HRESULT (STDMETHODCALLTYPE *OnDocWindowActivate)(
+        IOleInPlaceActiveObject* This,
+        BOOL fActivate);
+
+    HRESULT (STDMETHODCALLTYPE *ResizeBorder)(
+        IOleInPlaceActiveObject* This,
+        LPCRECT prcBorder,
+        IOleInPlaceUIWindow* pUIWindow,
+        BOOL fFrameWindow);
+
+    HRESULT (STDMETHODCALLTYPE *EnableModeless)(
+        IOleInPlaceActiveObject* This,
+        BOOL fEnable);
+
+};
+
+/*** IUnknown methods ***/
+#define IOleInPlaceActiveObject_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define IOleInPlaceActiveObject_AddRef(p) (p)->lpVtbl->AddRef(p)
+#define IOleInPlaceActiveObject_Release(p) (p)->lpVtbl->Release(p)
+/*** IOleWindow methods ***/
+#define IOleInPlaceActiveObject_GetWindow(p,a) (p)->lpVtbl->GetWindow(p,a)
+#define IOleInPlaceActiveObject_ContextSensitiveHelp(p,a) (p)->lpVtbl->ContextSensitiveHelp(p,a)
+/*** IOleInPlaceActiveObject methods ***/
+#define IOleInPlaceActiveObject_TranslateAccelerator(p,a) (p)->lpVtbl->TranslateAccelerator(p,a)
+#define IOleInPlaceActiveObject_OnFrameWindowActivate(p,a) (p)->lpVtbl->OnFrameWindowActivate(p,a)
+#define IOleInPlaceActiveObject_OnDocWindowActivate(p,a) (p)->lpVtbl->OnDocWindowActivate(p,a)
+#define IOleInPlaceActiveObject_ResizeBorder(p,a,b,c) (p)->lpVtbl->ResizeBorder(p,a,b,c)
+#define IOleInPlaceActiveObject_EnableModeless(p,a) (p)->lpVtbl->EnableModeless(p,a)
+
+#endif
+
+#define IOleInPlaceActiveObject_METHODS \
+    ICOM_MSVTABLE_COMPAT_FIELDS \
+    /*** IUnknown methods ***/ \
+    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE; \
+    STDMETHOD_(ULONG,Release)(THIS) PURE; \
+    /*** IOleWindow methods ***/ \
+    STDMETHOD_(HRESULT,GetWindow)(THIS_ HWND* phwnd) PURE; \
+    STDMETHOD_(HRESULT,ContextSensitiveHelp)(THIS_ BOOL fEnterMode) PURE; \
+    /*** IOleInPlaceActiveObject methods ***/ \
+    STDMETHOD_(HRESULT,TranslateAccelerator)(THIS_ struct tagMSG* lpmsg) PURE; \
+    STDMETHOD_(HRESULT,OnFrameWindowActivate)(THIS_ BOOL fActivate) PURE; \
+    STDMETHOD_(HRESULT,OnDocWindowActivate)(THIS_ BOOL fActivate) PURE; \
+    STDMETHOD_(HRESULT,ResizeBorder)(THIS_ LPCRECT prcBorder, IOleInPlaceUIWindow* pUIWindow, BOOL fFrameWindow) PURE; \
+    STDMETHOD_(HRESULT,EnableModeless)(THIS_ BOOL fEnable) PURE;
+
+HRESULT CALLBACK IOleInPlaceActiveObject_RemoteTranslateAccelerator_Proxy(
+    IOleInPlaceActiveObject* This);
+void __RPC_STUB IOleInPlaceActiveObject_RemoteTranslateAccelerator_Stub(
+    struct IRpcStubBuffer* This,
+    struct IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT CALLBACK IOleInPlaceActiveObject_TranslateAccelerator_Proxy(
+    IOleInPlaceActiveObject* This,
+    struct tagMSG* lpmsg);
+HRESULT __RPC_STUB IOleInPlaceActiveObject_TranslateAccelerator_Stub(
+    IOleInPlaceActiveObject* This);
+HRESULT CALLBACK IOleInPlaceActiveObject_OnFrameWindowActivate_Proxy(
+    IOleInPlaceActiveObject* This,
+    BOOL fActivate);
+void __RPC_STUB IOleInPlaceActiveObject_OnFrameWindowActivate_Stub(
+    struct IRpcStubBuffer* This,
+    struct IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT CALLBACK IOleInPlaceActiveObject_OnDocWindowActivate_Proxy(
+    IOleInPlaceActiveObject* This,
+    BOOL fActivate);
+void __RPC_STUB IOleInPlaceActiveObject_OnDocWindowActivate_Stub(
+    struct IRpcStubBuffer* This,
+    struct IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT CALLBACK IOleInPlaceActiveObject_RemoteResizeBorder_Proxy(
+    IOleInPlaceActiveObject* This,
+    LPCRECT prcBorder,
+    REFIID riid,
+    IOleInPlaceUIWindow* pUIWindow,
+    BOOL fFrameWindow);
+void __RPC_STUB IOleInPlaceActiveObject_RemoteResizeBorder_Stub(
+    struct IRpcStubBuffer* This,
+    struct IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT CALLBACK IOleInPlaceActiveObject_ResizeBorder_Proxy(
+    IOleInPlaceActiveObject* This,
+    LPCRECT prcBorder,
+    IOleInPlaceUIWindow* pUIWindow,
+    BOOL fFrameWindow);
+HRESULT __RPC_STUB IOleInPlaceActiveObject_ResizeBorder_Stub(
+    IOleInPlaceActiveObject* This,
+    LPCRECT prcBorder,
+    REFIID riid,
+    IOleInPlaceUIWindow* pUIWindow,
+    BOOL fFrameWindow);
+HRESULT CALLBACK IOleInPlaceActiveObject_EnableModeless_Proxy(
+    IOleInPlaceActiveObject* This,
+    BOOL fEnable);
+void __RPC_STUB IOleInPlaceActiveObject_EnableModeless_Stub(
+    struct IRpcStubBuffer* This,
+    struct IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IOleInPlaceActiveObject_INTERFACE_DEFINED__ */
+
+typedef IOleInPlaceUIWindow *LPOLEINPLACEUIWINDOW;
+
+typedef RECT BORDERWIDTHS;
+
+typedef LPRECT LPBORDERWIDTHS;
+
+typedef LPCRECT LPCBORDERWIDTHS;
+
+/*****************************************************************************
+ * IOleInPlaceUIWindow interface
+ */
+#ifndef __IOleInPlaceUIWindow_INTERFACE_DEFINED__
+#define __IOleInPlaceUIWindow_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IOleInPlaceUIWindow, 0x00000115, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+struct IOleInPlaceUIWindow : public IOleWindow
+{
+    virtual HRESULT STDMETHODCALLTYPE GetBorder(
+        LPRECT lprectBorder) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE RequestBorderSpace(
+        LPCBORDERWIDTHS pborderwidths) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetBorderSpace(
+        LPCBORDERWIDTHS pborderwidths) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetActiveObject(
+        IOleInPlaceActiveObject* pActiveObject,
+        LPCOLESTR pszObjName) = 0;
+
+};
+#else
+typedef struct IOleInPlaceUIWindowVtbl IOleInPlaceUIWindowVtbl;
+struct IOleInPlaceUIWindow {
+    const IOleInPlaceUIWindowVtbl* lpVtbl;
+};
+struct IOleInPlaceUIWindowVtbl {
+    ICOM_MSVTABLE_COMPAT_FIELDS
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IOleInPlaceUIWindow* This,
+        REFIID riid,
+        void** ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IOleInPlaceUIWindow* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IOleInPlaceUIWindow* This);
+
+    /*** IOleWindow methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetWindow)(
+        IOleInPlaceUIWindow* This,
+        HWND* phwnd);
+
+    HRESULT (STDMETHODCALLTYPE *ContextSensitiveHelp)(
+        IOleInPlaceUIWindow* This,
+        BOOL fEnterMode);
+
+    /*** IOleInPlaceUIWindow methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetBorder)(
+        IOleInPlaceUIWindow* This,
+        LPRECT lprectBorder);
+
+    HRESULT (STDMETHODCALLTYPE *RequestBorderSpace)(
+        IOleInPlaceUIWindow* This,
+        LPCBORDERWIDTHS pborderwidths);
+
+    HRESULT (STDMETHODCALLTYPE *SetBorderSpace)(
+        IOleInPlaceUIWindow* This,
+        LPCBORDERWIDTHS pborderwidths);
+
+    HRESULT (STDMETHODCALLTYPE *SetActiveObject)(
+        IOleInPlaceUIWindow* This,
+        IOleInPlaceActiveObject* pActiveObject,
+        LPCOLESTR pszObjName);
+
+};
+
+/*** IUnknown methods ***/
+#define IOleInPlaceUIWindow_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define IOleInPlaceUIWindow_AddRef(p) (p)->lpVtbl->AddRef(p)
+#define IOleInPlaceUIWindow_Release(p) (p)->lpVtbl->Release(p)
+/*** IOleWindow methods ***/
+#define IOleInPlaceUIWindow_GetWindow(p,a) (p)->lpVtbl->GetWindow(p,a)
+#define IOleInPlaceUIWindow_ContextSensitiveHelp(p,a) (p)->lpVtbl->ContextSensitiveHelp(p,a)
+/*** IOleInPlaceUIWindow methods ***/
+#define IOleInPlaceUIWindow_GetBorder(p,a) (p)->lpVtbl->GetBorder(p,a)
+#define IOleInPlaceUIWindow_RequestBorderSpace(p,a) (p)->lpVtbl->RequestBorderSpace(p,a)
+#define IOleInPlaceUIWindow_SetBorderSpace(p,a) (p)->lpVtbl->SetBorderSpace(p,a)
+#define IOleInPlaceUIWindow_SetActiveObject(p,a,b) (p)->lpVtbl->SetActiveObject(p,a,b)
+
+#endif
+
+#define IOleInPlaceUIWindow_METHODS \
+    ICOM_MSVTABLE_COMPAT_FIELDS \
+    /*** IUnknown methods ***/ \
+    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE; \
+    STDMETHOD_(ULONG,Release)(THIS) PURE; \
+    /*** IOleWindow methods ***/ \
+    STDMETHOD_(HRESULT,GetWindow)(THIS_ HWND* phwnd) PURE; \
+    STDMETHOD_(HRESULT,ContextSensitiveHelp)(THIS_ BOOL fEnterMode) PURE; \
+    /*** IOleInPlaceUIWindow methods ***/ \
+    STDMETHOD_(HRESULT,GetBorder)(THIS_ LPRECT lprectBorder) PURE; \
+    STDMETHOD_(HRESULT,RequestBorderSpace)(THIS_ LPCBORDERWIDTHS pborderwidths) PURE; \
+    STDMETHOD_(HRESULT,SetBorderSpace)(THIS_ LPCBORDERWIDTHS pborderwidths) PURE; \
+    STDMETHOD_(HRESULT,SetActiveObject)(THIS_ IOleInPlaceActiveObject* pActiveObject, LPCOLESTR pszObjName) PURE;
+
+HRESULT CALLBACK IOleInPlaceUIWindow_GetBorder_Proxy(
+    IOleInPlaceUIWindow* This,
+    LPRECT lprectBorder);
+void __RPC_STUB IOleInPlaceUIWindow_GetBorder_Stub(
+    struct IRpcStubBuffer* This,
+    struct IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT CALLBACK IOleInPlaceUIWindow_RequestBorderSpace_Proxy(
+    IOleInPlaceUIWindow* This,
+    LPCBORDERWIDTHS pborderwidths);
+void __RPC_STUB IOleInPlaceUIWindow_RequestBorderSpace_Stub(
+    struct IRpcStubBuffer* This,
+    struct IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT CALLBACK IOleInPlaceUIWindow_SetBorderSpace_Proxy(
+    IOleInPlaceUIWindow* This,
+    LPCBORDERWIDTHS pborderwidths);
+void __RPC_STUB IOleInPlaceUIWindow_SetBorderSpace_Stub(
+    struct IRpcStubBuffer* This,
+    struct IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT CALLBACK IOleInPlaceUIWindow_SetActiveObject_Proxy(
+    IOleInPlaceUIWindow* This,
+    IOleInPlaceActiveObject* pActiveObject,
+    LPCOLESTR pszObjName);
+void __RPC_STUB IOleInPlaceUIWindow_SetActiveObject_Stub(
+    struct IRpcStubBuffer* This,
+    struct IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IOleInPlaceUIWindow_INTERFACE_DEFINED__ */
+
+#ifndef __IOleInPlaceFrame_FWD_DEFINED__
+#define __IOleInPlaceFrame_FWD_DEFINED__
+typedef struct IOleInPlaceFrame IOleInPlaceFrame;
+#endif
+
+typedef IOleInPlaceFrame *LPOLEINPLACEFRAME;
+
+typedef struct tagOleInPlaceFrameInfo {
+    UINT cb;
+    BOOL fMDIApp;
+    HWND hwndFrame;
+    HACCEL haccel;
+    UINT cAccelEntries;
+} OLEINPLACEFRAMEINFO, *LPOLEINPLACEFRAMEINFO;
+
+typedef struct tagOleMenuGroupWidths {
+    LONG width[6];
+} OLEMENUGROUPWIDTHS, *LPOLEMENUGROUPWIDTHS;
+
+typedef HGLOBAL HOLEMENU;
+
+/*****************************************************************************
+ * IOleInPlaceFrame interface
+ */
+#ifndef __IOleInPlaceFrame_INTERFACE_DEFINED__
+#define __IOleInPlaceFrame_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IOleInPlaceFrame, 0x00000116, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+struct IOleInPlaceFrame : public IOleInPlaceUIWindow
+{
+    virtual HRESULT STDMETHODCALLTYPE InsertMenus(
+        HMENU hmenuShared,
+        LPOLEMENUGROUPWIDTHS lpMenuWidths) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetMenu(
+        HMENU hmenuShared,
+        HOLEMENU holemenu,
+        HWND hwndActiveObject) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE RemoveMenus(
+        HMENU hmenuShared) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetStatusText(
+        LPCOLESTR pszStatusText) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE EnableModeless(
+        BOOL fEnable) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE TranslateAccelerator(
+        struct tagMSG* lpmsg,
+        WORD wID) = 0;
+
+};
+#else
+typedef struct IOleInPlaceFrameVtbl IOleInPlaceFrameVtbl;
+struct IOleInPlaceFrame {
+    const IOleInPlaceFrameVtbl* lpVtbl;
+};
+struct IOleInPlaceFrameVtbl {
+    ICOM_MSVTABLE_COMPAT_FIELDS
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IOleInPlaceFrame* This,
+        REFIID riid,
+        void** ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IOleInPlaceFrame* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IOleInPlaceFrame* This);
+
+    /*** IOleWindow methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetWindow)(
+        IOleInPlaceFrame* This,
+        HWND* phwnd);
+
+    HRESULT (STDMETHODCALLTYPE *ContextSensitiveHelp)(
+        IOleInPlaceFrame* This,
+        BOOL fEnterMode);
+
+    /*** IOleInPlaceUIWindow methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetBorder)(
+        IOleInPlaceFrame* This,
+        LPRECT lprectBorder);
+
+    HRESULT (STDMETHODCALLTYPE *RequestBorderSpace)(
+        IOleInPlaceFrame* This,
+        LPCBORDERWIDTHS pborderwidths);
+
+    HRESULT (STDMETHODCALLTYPE *SetBorderSpace)(
+        IOleInPlaceFrame* This,
+        LPCBORDERWIDTHS pborderwidths);
+
+    HRESULT (STDMETHODCALLTYPE *SetActiveObject)(
+        IOleInPlaceFrame* This,
+        IOleInPlaceActiveObject* pActiveObject,
+        LPCOLESTR pszObjName);
+
+    /*** IOleInPlaceFrame methods ***/
+    HRESULT (STDMETHODCALLTYPE *InsertMenus)(
+        IOleInPlaceFrame* This,
+        HMENU hmenuShared,
+        LPOLEMENUGROUPWIDTHS lpMenuWidths);
+
+    HRESULT (STDMETHODCALLTYPE *SetMenu)(
+        IOleInPlaceFrame* This,
+        HMENU hmenuShared,
+        HOLEMENU holemenu,
+        HWND hwndActiveObject);
+
+    HRESULT (STDMETHODCALLTYPE *RemoveMenus)(
+        IOleInPlaceFrame* This,
+        HMENU hmenuShared);
+
+    HRESULT (STDMETHODCALLTYPE *SetStatusText)(
+        IOleInPlaceFrame* This,
+        LPCOLESTR pszStatusText);
+
+    HRESULT (STDMETHODCALLTYPE *EnableModeless)(
+        IOleInPlaceFrame* This,
+        BOOL fEnable);
+
+    HRESULT (STDMETHODCALLTYPE *TranslateAccelerator)(
+        IOleInPlaceFrame* This,
+        struct tagMSG* lpmsg,
+        WORD wID);
+
+};
+
+/*** IUnknown methods ***/
+#define IOleInPlaceFrame_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define IOleInPlaceFrame_AddRef(p) (p)->lpVtbl->AddRef(p)
+#define IOleInPlaceFrame_Release(p) (p)->lpVtbl->Release(p)
+/*** IOleWindow methods ***/
+#define IOleInPlaceFrame_GetWindow(p,a) (p)->lpVtbl->GetWindow(p,a)
+#define IOleInPlaceFrame_ContextSensitiveHelp(p,a) (p)->lpVtbl->ContextSensitiveHelp(p,a)
+/*** IOleInPlaceUIWindow methods ***/
+#define IOleInPlaceFrame_GetBorder(p,a) (p)->lpVtbl->GetBorder(p,a)
+#define IOleInPlaceFrame_RequestBorderSpace(p,a) (p)->lpVtbl->RequestBorderSpace(p,a)
+#define IOleInPlaceFrame_SetBorderSpace(p,a) (p)->lpVtbl->SetBorderSpace(p,a)
+#define IOleInPlaceFrame_SetActiveObject(p,a,b) (p)->lpVtbl->SetActiveObject(p,a,b)
+/*** IOleInPlaceFrame methods ***/
+#define IOleInPlaceFrame_InsertMenus(p,a,b) (p)->lpVtbl->InsertMenus(p,a,b)
+#define IOleInPlaceFrame_SetMenu(p,a,b,c) (p)->lpVtbl->SetMenu(p,a,b,c)
+#define IOleInPlaceFrame_RemoveMenus(p,a) (p)->lpVtbl->RemoveMenus(p,a)
+#define IOleInPlaceFrame_SetStatusText(p,a) (p)->lpVtbl->SetStatusText(p,a)
+#define IOleInPlaceFrame_EnableModeless(p,a) (p)->lpVtbl->EnableModeless(p,a)
+#define IOleInPlaceFrame_TranslateAccelerator(p,a,b) (p)->lpVtbl->TranslateAccelerator(p,a,b)
+
+#endif
+
+#define IOleInPlaceFrame_METHODS \
+    ICOM_MSVTABLE_COMPAT_FIELDS \
+    /*** IUnknown methods ***/ \
+    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE; \
+    STDMETHOD_(ULONG,Release)(THIS) PURE; \
+    /*** IOleWindow methods ***/ \
+    STDMETHOD_(HRESULT,GetWindow)(THIS_ HWND* phwnd) PURE; \
+    STDMETHOD_(HRESULT,ContextSensitiveHelp)(THIS_ BOOL fEnterMode) PURE; \
+    /*** IOleInPlaceUIWindow methods ***/ \
+    STDMETHOD_(HRESULT,GetBorder)(THIS_ LPRECT lprectBorder) PURE; \
+    STDMETHOD_(HRESULT,RequestBorderSpace)(THIS_ LPCBORDERWIDTHS pborderwidths) PURE; \
+    STDMETHOD_(HRESULT,SetBorderSpace)(THIS_ LPCBORDERWIDTHS pborderwidths) PURE; \
+    STDMETHOD_(HRESULT,SetActiveObject)(THIS_ IOleInPlaceActiveObject* pActiveObject, LPCOLESTR pszObjName) PURE; \
+    /*** IOleInPlaceFrame methods ***/ \
+    STDMETHOD_(HRESULT,InsertMenus)(THIS_ HMENU hmenuShared, LPOLEMENUGROUPWIDTHS lpMenuWidths) PURE; \
+    STDMETHOD_(HRESULT,SetMenu)(THIS_ HMENU hmenuShared, HOLEMENU holemenu, HWND hwndActiveObject) PURE; \
+    STDMETHOD_(HRESULT,RemoveMenus)(THIS_ HMENU hmenuShared) PURE; \
+    STDMETHOD_(HRESULT,SetStatusText)(THIS_ LPCOLESTR pszStatusText) PURE; \
+    STDMETHOD_(HRESULT,EnableModeless)(THIS_ BOOL fEnable) PURE; \
+    STDMETHOD_(HRESULT,TranslateAccelerator)(THIS_ struct tagMSG* lpmsg, WORD wID) PURE;
+
+HRESULT CALLBACK IOleInPlaceFrame_InsertMenus_Proxy(
+    IOleInPlaceFrame* This,
+    HMENU hmenuShared,
+    LPOLEMENUGROUPWIDTHS lpMenuWidths);
+void __RPC_STUB IOleInPlaceFrame_InsertMenus_Stub(
+    struct IRpcStubBuffer* This,
+    struct IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT CALLBACK IOleInPlaceFrame_SetMenu_Proxy(
+    IOleInPlaceFrame* This,
+    HMENU hmenuShared,
+    HOLEMENU holemenu,
+    HWND hwndActiveObject);
+void __RPC_STUB IOleInPlaceFrame_SetMenu_Stub(
+    struct IRpcStubBuffer* This,
+    struct IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT CALLBACK IOleInPlaceFrame_RemoveMenus_Proxy(
+    IOleInPlaceFrame* This,
+    HMENU hmenuShared);
+void __RPC_STUB IOleInPlaceFrame_RemoveMenus_Stub(
+    struct IRpcStubBuffer* This,
+    struct IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT CALLBACK IOleInPlaceFrame_SetStatusText_Proxy(
+    IOleInPlaceFrame* This,
+    LPCOLESTR pszStatusText);
+void __RPC_STUB IOleInPlaceFrame_SetStatusText_Stub(
+    struct IRpcStubBuffer* This,
+    struct IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT CALLBACK IOleInPlaceFrame_EnableModeless_Proxy(
+    IOleInPlaceFrame* This,
+    BOOL fEnable);
+void __RPC_STUB IOleInPlaceFrame_EnableModeless_Stub(
+    struct IRpcStubBuffer* This,
+    struct IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT CALLBACK IOleInPlaceFrame_TranslateAccelerator_Proxy(
+    IOleInPlaceFrame* This,
+    struct tagMSG* lpmsg,
+    WORD wID);
+void __RPC_STUB IOleInPlaceFrame_TranslateAccelerator_Stub(
+    struct IRpcStubBuffer* This,
+    struct IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IOleInPlaceFrame_INTERFACE_DEFINED__ */
+
+#ifndef __IOleInPlaceSite_FWD_DEFINED__
+#define __IOleInPlaceSite_FWD_DEFINED__
+typedef struct IOleInPlaceSite IOleInPlaceSite;
+#endif
+
+typedef IOleInPlaceSite *LPOLEINPLACESITE;
+
+/*****************************************************************************
+ * IOleInPlaceSite interface
+ */
+#ifndef __IOleInPlaceSite_INTERFACE_DEFINED__
+#define __IOleInPlaceSite_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IOleInPlaceSite, 0x00000119, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+struct IOleInPlaceSite : public IOleWindow
+{
+    virtual HRESULT STDMETHODCALLTYPE CanInPlaceActivate(
+        ) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE OnInPlaceActivate(
+        ) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE OnUIActivate(
+        ) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetWindowContext(
+        IOleInPlaceFrame** ppFrame,
+        IOleInPlaceUIWindow** ppDoc,
+        LPRECT lprcPosRect,
+        LPRECT lprcClipRect,
+        LPOLEINPLACEFRAMEINFO lpFrameInfo) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Scroll(
+        SIZE scrollExtant) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE OnUIDeactivate(
+        BOOL fUndoable) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE OnInPlaceDeactivate(
+        ) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE DiscardUndoState(
+        ) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE DeactivateAndUndo(
+        ) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE OnPosRectChange(
+        LPCRECT lprcPosRect) = 0;
+
+};
+#else
+typedef struct IOleInPlaceSiteVtbl IOleInPlaceSiteVtbl;
+struct IOleInPlaceSite {
+    const IOleInPlaceSiteVtbl* lpVtbl;
+};
+struct IOleInPlaceSiteVtbl {
+    ICOM_MSVTABLE_COMPAT_FIELDS
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IOleInPlaceSite* This,
+        REFIID riid,
+        void** ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IOleInPlaceSite* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IOleInPlaceSite* This);
+
+    /*** IOleWindow methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetWindow)(
+        IOleInPlaceSite* This,
+        HWND* phwnd);
+
+    HRESULT (STDMETHODCALLTYPE *ContextSensitiveHelp)(
+        IOleInPlaceSite* This,
+        BOOL fEnterMode);
+
+    /*** IOleInPlaceSite methods ***/
+    HRESULT (STDMETHODCALLTYPE *CanInPlaceActivate)(
+        IOleInPlaceSite* This);
+
+    HRESULT (STDMETHODCALLTYPE *OnInPlaceActivate)(
+        IOleInPlaceSite* This);
+
+    HRESULT (STDMETHODCALLTYPE *OnUIActivate)(
+        IOleInPlaceSite* This);
+
+    HRESULT (STDMETHODCALLTYPE *GetWindowContext)(
+        IOleInPlaceSite* This,
+        IOleInPlaceFrame** ppFrame,
+        IOleInPlaceUIWindow** ppDoc,
+        LPRECT lprcPosRect,
+        LPRECT lprcClipRect,
+        LPOLEINPLACEFRAMEINFO lpFrameInfo);
+
+    HRESULT (STDMETHODCALLTYPE *Scroll)(
+        IOleInPlaceSite* This,
+        SIZE scrollExtant);
+
+    HRESULT (STDMETHODCALLTYPE *OnUIDeactivate)(
+        IOleInPlaceSite* This,
+        BOOL fUndoable);
+
+    HRESULT (STDMETHODCALLTYPE *OnInPlaceDeactivate)(
+        IOleInPlaceSite* This);
+
+    HRESULT (STDMETHODCALLTYPE *DiscardUndoState)(
+        IOleInPlaceSite* This);
+
+    HRESULT (STDMETHODCALLTYPE *DeactivateAndUndo)(
+        IOleInPlaceSite* This);
+
+    HRESULT (STDMETHODCALLTYPE *OnPosRectChange)(
+        IOleInPlaceSite* This,
+        LPCRECT lprcPosRect);
+
+};
+
+/*** IUnknown methods ***/
+#define IOleInPlaceSite_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define IOleInPlaceSite_AddRef(p) (p)->lpVtbl->AddRef(p)
+#define IOleInPlaceSite_Release(p) (p)->lpVtbl->Release(p)
+/*** IOleWindow methods ***/
+#define IOleInPlaceSite_GetWindow(p,a) (p)->lpVtbl->GetWindow(p,a)
+#define IOleInPlaceSite_ContextSensitiveHelp(p,a) (p)->lpVtbl->ContextSensitiveHelp(p,a)
+/*** IOleInPlaceSite methods ***/
+#define IOleInPlaceSite_CanInPlaceActivate(p) (p)->lpVtbl->CanInPlaceActivate(p)
+#define IOleInPlaceSite_OnInPlaceActivate(p) (p)->lpVtbl->OnInPlaceActivate(p)
+#define IOleInPlaceSite_OnUIActivate(p) (p)->lpVtbl->OnUIActivate(p)
+#define IOleInPlaceSite_GetWindowContext(p,a,b,c,d,e) (p)->lpVtbl->GetWindowContext(p,a,b,c,d,e)
+#define IOleInPlaceSite_Scroll(p,a) (p)->lpVtbl->Scroll(p,a)
+#define IOleInPlaceSite_OnUIDeactivate(p,a) (p)->lpVtbl->OnUIDeactivate(p,a)
+#define IOleInPlaceSite_OnInPlaceDeactivate(p) (p)->lpVtbl->OnInPlaceDeactivate(p)
+#define IOleInPlaceSite_DiscardUndoState(p) (p)->lpVtbl->DiscardUndoState(p)
+#define IOleInPlaceSite_DeactivateAndUndo(p) (p)->lpVtbl->DeactivateAndUndo(p)
+#define IOleInPlaceSite_OnPosRectChange(p,a) (p)->lpVtbl->OnPosRectChange(p,a)
+
+#endif
+
+#define IOleInPlaceSite_METHODS \
+    ICOM_MSVTABLE_COMPAT_FIELDS \
+    /*** IUnknown methods ***/ \
+    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE; \
+    STDMETHOD_(ULONG,Release)(THIS) PURE; \
+    /*** IOleWindow methods ***/ \
+    STDMETHOD_(HRESULT,GetWindow)(THIS_ HWND* phwnd) PURE; \
+    STDMETHOD_(HRESULT,ContextSensitiveHelp)(THIS_ BOOL fEnterMode) PURE; \
+    /*** IOleInPlaceSite methods ***/ \
+    STDMETHOD_(HRESULT,CanInPlaceActivate)(THIS) PURE; \
+    STDMETHOD_(HRESULT,OnInPlaceActivate)(THIS) PURE; \
+    STDMETHOD_(HRESULT,OnUIActivate)(THIS) PURE; \
+    STDMETHOD_(HRESULT,GetWindowContext)(THIS_ IOleInPlaceFrame** ppFrame, IOleInPlaceUIWindow** ppDoc, LPRECT lprcPosRect, LPRECT lprcClipRect, LPOLEINPLACEFRAMEINFO lpFrameInfo) PURE; \
+    STDMETHOD_(HRESULT,Scroll)(THIS_ SIZE scrollExtant) PURE; \
+    STDMETHOD_(HRESULT,OnUIDeactivate)(THIS_ BOOL fUndoable) PURE; \
+    STDMETHOD_(HRESULT,OnInPlaceDeactivate)(THIS) PURE; \
+    STDMETHOD_(HRESULT,DiscardUndoState)(THIS) PURE; \
+    STDMETHOD_(HRESULT,DeactivateAndUndo)(THIS) PURE; \
+    STDMETHOD_(HRESULT,OnPosRectChange)(THIS_ LPCRECT lprcPosRect) PURE;
+
+HRESULT CALLBACK IOleInPlaceSite_CanInPlaceActivate_Proxy(
+    IOleInPlaceSite* This);
+void __RPC_STUB IOleInPlaceSite_CanInPlaceActivate_Stub(
+    struct IRpcStubBuffer* This,
+    struct IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT CALLBACK IOleInPlaceSite_OnInPlaceActivate_Proxy(
+    IOleInPlaceSite* This);
+void __RPC_STUB IOleInPlaceSite_OnInPlaceActivate_Stub(
+    struct IRpcStubBuffer* This,
+    struct IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT CALLBACK IOleInPlaceSite_OnUIActivate_Proxy(
+    IOleInPlaceSite* This);
+void __RPC_STUB IOleInPlaceSite_OnUIActivate_Stub(
+    struct IRpcStubBuffer* This,
+    struct IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT CALLBACK IOleInPlaceSite_GetWindowContext_Proxy(
+    IOleInPlaceSite* This,
+    IOleInPlaceFrame** ppFrame,
+    IOleInPlaceUIWindow** ppDoc,
+    LPRECT lprcPosRect,
+    LPRECT lprcClipRect,
+    LPOLEINPLACEFRAMEINFO lpFrameInfo);
+void __RPC_STUB IOleInPlaceSite_GetWindowContext_Stub(
+    struct IRpcStubBuffer* This,
+    struct IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT CALLBACK IOleInPlaceSite_Scroll_Proxy(
+    IOleInPlaceSite* This,
+    SIZE scrollExtant);
+void __RPC_STUB IOleInPlaceSite_Scroll_Stub(
+    struct IRpcStubBuffer* This,
+    struct IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT CALLBACK IOleInPlaceSite_OnUIDeactivate_Proxy(
+    IOleInPlaceSite* This,
+    BOOL fUndoable);
+void __RPC_STUB IOleInPlaceSite_OnUIDeactivate_Stub(
+    struct IRpcStubBuffer* This,
+    struct IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT CALLBACK IOleInPlaceSite_OnInPlaceDeactivate_Proxy(
+    IOleInPlaceSite* This);
+void __RPC_STUB IOleInPlaceSite_OnInPlaceDeactivate_Stub(
+    struct IRpcStubBuffer* This,
+    struct IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT CALLBACK IOleInPlaceSite_DiscardUndoState_Proxy(
+    IOleInPlaceSite* This);
+void __RPC_STUB IOleInPlaceSite_DiscardUndoState_Stub(
+    struct IRpcStubBuffer* This,
+    struct IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT CALLBACK IOleInPlaceSite_DeactivateAndUndo_Proxy(
+    IOleInPlaceSite* This);
+void __RPC_STUB IOleInPlaceSite_DeactivateAndUndo_Stub(
+    struct IRpcStubBuffer* This,
+    struct IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT CALLBACK IOleInPlaceSite_OnPosRectChange_Proxy(
+    IOleInPlaceSite* This,
+    LPCRECT lprcPosRect);
+void __RPC_STUB IOleInPlaceSite_OnPosRectChange_Stub(
+    struct IRpcStubBuffer* This,
+    struct IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IOleInPlaceSite_INTERFACE_DEFINED__ */
+
+#ifndef __IParseDisplayName_FWD_DEFINED__
+#define __IParseDisplayName_FWD_DEFINED__
+typedef struct IParseDisplayName IParseDisplayName;
+#endif
+
+typedef IParseDisplayName *LPPARSEDISPLAYNAME;
+
+/*****************************************************************************
+ * IParseDisplayName interface
+ */
+#ifndef __IParseDisplayName_INTERFACE_DEFINED__
+#define __IParseDisplayName_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IParseDisplayName, 0x0000011a, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+struct IParseDisplayName : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE ParseDisplayName(
+        IBindCtx* pbc,
+        LPOLESTR pszDisplayName,
+        ULONG* pchEaten,
+        IMoniker** ppmkOut) = 0;
+
+};
+#else
+typedef struct IParseDisplayNameVtbl IParseDisplayNameVtbl;
+struct IParseDisplayName {
+    const IParseDisplayNameVtbl* lpVtbl;
+};
+struct IParseDisplayNameVtbl {
+    ICOM_MSVTABLE_COMPAT_FIELDS
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IParseDisplayName* This,
+        REFIID riid,
+        void** ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IParseDisplayName* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IParseDisplayName* This);
+
+    /*** IParseDisplayName methods ***/
+    HRESULT (STDMETHODCALLTYPE *ParseDisplayName)(
+        IParseDisplayName* This,
+        IBindCtx* pbc,
+        LPOLESTR pszDisplayName,
+        ULONG* pchEaten,
+        IMoniker** ppmkOut);
+
+};
+
+/*** IUnknown methods ***/
+#define IParseDisplayName_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define IParseDisplayName_AddRef(p) (p)->lpVtbl->AddRef(p)
+#define IParseDisplayName_Release(p) (p)->lpVtbl->Release(p)
+/*** IParseDisplayName methods ***/
+#define IParseDisplayName_ParseDisplayName(p,a,b,c,d) (p)->lpVtbl->ParseDisplayName(p,a,b,c,d)
+
+#endif
+
+#define IParseDisplayName_METHODS \
+    ICOM_MSVTABLE_COMPAT_FIELDS \
+    /*** IUnknown methods ***/ \
+    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE; \
+    STDMETHOD_(ULONG,Release)(THIS) PURE; \
+    /*** IParseDisplayName methods ***/ \
+    STDMETHOD_(HRESULT,ParseDisplayName)(THIS_ IBindCtx* pbc, LPOLESTR pszDisplayName, ULONG* pchEaten, IMoniker** ppmkOut) PURE;
+
+HRESULT CALLBACK IParseDisplayName_ParseDisplayName_Proxy(
+    IParseDisplayName* This,
+    IBindCtx* pbc,
+    LPOLESTR pszDisplayName,
+    ULONG* pchEaten,
+    IMoniker** ppmkOut);
+void __RPC_STUB IParseDisplayName_ParseDisplayName_Stub(
+    struct IRpcStubBuffer* This,
+    struct IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IParseDisplayName_INTERFACE_DEFINED__ */
+
+#ifndef __IOleContainer_FWD_DEFINED__
+#define __IOleContainer_FWD_DEFINED__
+typedef struct IOleContainer IOleContainer;
+#endif
+
+typedef IOleContainer *LPOLECONTAINER;
+
+/*****************************************************************************
+ * IOleContainer interface
+ */
+#ifndef __IOleContainer_INTERFACE_DEFINED__
+#define __IOleContainer_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IOleContainer, 0x0000011b, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+struct IOleContainer : public IParseDisplayName
+{
+    virtual HRESULT STDMETHODCALLTYPE EnumObjects(
+        DWORD grfFlags,
+        IEnumUnknown** ppenum) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE LockContainer(
+        BOOL fLock) = 0;
+
+};
+#else
+typedef struct IOleContainerVtbl IOleContainerVtbl;
+struct IOleContainer {
+    const IOleContainerVtbl* lpVtbl;
+};
+struct IOleContainerVtbl {
+    ICOM_MSVTABLE_COMPAT_FIELDS
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IOleContainer* This,
+        REFIID riid,
+        void** ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IOleContainer* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IOleContainer* This);
+
+    /*** IParseDisplayName methods ***/
+    HRESULT (STDMETHODCALLTYPE *ParseDisplayName)(
+        IOleContainer* This,
+        IBindCtx* pbc,
+        LPOLESTR pszDisplayName,
+        ULONG* pchEaten,
+        IMoniker** ppmkOut);
+
+    /*** IOleContainer methods ***/
+    HRESULT (STDMETHODCALLTYPE *EnumObjects)(
+        IOleContainer* This,
+        DWORD grfFlags,
+        IEnumUnknown** ppenum);
+
+    HRESULT (STDMETHODCALLTYPE *LockContainer)(
+        IOleContainer* This,
+        BOOL fLock);
+
+};
+
+/*** IUnknown methods ***/
+#define IOleContainer_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define IOleContainer_AddRef(p) (p)->lpVtbl->AddRef(p)
+#define IOleContainer_Release(p) (p)->lpVtbl->Release(p)
+/*** IParseDisplayName methods ***/
+#define IOleContainer_ParseDisplayName(p,a,b,c,d) (p)->lpVtbl->ParseDisplayName(p,a,b,c,d)
+/*** IOleContainer methods ***/
+#define IOleContainer_EnumObjects(p,a,b) (p)->lpVtbl->EnumObjects(p,a,b)
+#define IOleContainer_LockContainer(p,a) (p)->lpVtbl->LockContainer(p,a)
+
+#endif
+
+#define IOleContainer_METHODS \
+    ICOM_MSVTABLE_COMPAT_FIELDS \
+    /*** IUnknown methods ***/ \
+    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE; \
+    STDMETHOD_(ULONG,Release)(THIS) PURE; \
+    /*** IParseDisplayName methods ***/ \
+    STDMETHOD_(HRESULT,ParseDisplayName)(THIS_ IBindCtx* pbc, LPOLESTR pszDisplayName, ULONG* pchEaten, IMoniker** ppmkOut) PURE; \
+    /*** IOleContainer methods ***/ \
+    STDMETHOD_(HRESULT,EnumObjects)(THIS_ DWORD grfFlags, IEnumUnknown** ppenum) PURE; \
+    STDMETHOD_(HRESULT,LockContainer)(THIS_ BOOL fLock) PURE;
+
+HRESULT CALLBACK IOleContainer_EnumObjects_Proxy(
+    IOleContainer* This,
+    DWORD grfFlags,
+    IEnumUnknown** ppenum);
+void __RPC_STUB IOleContainer_EnumObjects_Stub(
+    struct IRpcStubBuffer* This,
+    struct IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT CALLBACK IOleContainer_LockContainer_Proxy(
+    IOleContainer* This,
+    BOOL fLock);
+void __RPC_STUB IOleContainer_LockContainer_Stub(
+    struct IRpcStubBuffer* This,
+    struct IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IOleContainer_INTERFACE_DEFINED__ */
+
+#ifndef __IOleItemContainer_FWD_DEFINED__
+#define __IOleItemContainer_FWD_DEFINED__
+typedef struct IOleItemContainer IOleItemContainer;
+#endif
+
+typedef IOleItemContainer *LPOLEITEMCONTAINER;
+
+typedef enum tagBINDSPEED {
+    BINDSPEED_INDEFINITE = 1,
+    BINDSPEED_MODERATE = 2,
+    BINDSPEED_IMMEDIATE = 3
+} BINDSPEED;
+
+typedef enum tagOLECONTF {
+    OLECONTF_EMBEDDINGS = 1,
+    OLECONTF_LINKS = 2,
+    OLECONTF_OTHERS = 4,
+    OLECONTF_OLNYUSER = 8,
+    OLECONTF_ONLYIFRUNNING = 16
+} OLECONTF;
+
+#ifdef __WINESRC__
+#undef GetObject
+#endif
+/*****************************************************************************
+ * IOleItemContainer interface
+ */
+#ifndef __IOleItemContainer_INTERFACE_DEFINED__
+#define __IOleItemContainer_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IOleItemContainer, 0x0000011c, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+struct IOleItemContainer : public IOleContainer
+{
+    virtual HRESULT STDMETHODCALLTYPE GetObject(
+        LPOLESTR pszItem,
+        DWORD dwSpeedNeeded,
+        IBindCtx* pbc,
+        REFIID riid,
+        void** ppvObject) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetObjectStorage(
+        LPOLESTR pszItem,
+        IBindCtx* pbc,
+        REFIID riid,
+        void** ppvStorage) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE IsRunning(
+        LPOLESTR pszItem) = 0;
+
+};
+#else
+typedef struct IOleItemContainerVtbl IOleItemContainerVtbl;
+struct IOleItemContainer {
+    const IOleItemContainerVtbl* lpVtbl;
+};
+struct IOleItemContainerVtbl {
+    ICOM_MSVTABLE_COMPAT_FIELDS
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IOleItemContainer* This,
+        REFIID riid,
+        void** ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IOleItemContainer* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IOleItemContainer* This);
+
+    /*** IParseDisplayName methods ***/
+    HRESULT (STDMETHODCALLTYPE *ParseDisplayName)(
+        IOleItemContainer* This,
+        IBindCtx* pbc,
+        LPOLESTR pszDisplayName,
+        ULONG* pchEaten,
+        IMoniker** ppmkOut);
+
+    /*** IOleContainer methods ***/
+    HRESULT (STDMETHODCALLTYPE *EnumObjects)(
+        IOleItemContainer* This,
+        DWORD grfFlags,
+        IEnumUnknown** ppenum);
+
+    HRESULT (STDMETHODCALLTYPE *LockContainer)(
+        IOleItemContainer* This,
+        BOOL fLock);
+
+    /*** IOleItemContainer methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetObject)(
+        IOleItemContainer* This,
+        LPOLESTR pszItem,
+        DWORD dwSpeedNeeded,
+        IBindCtx* pbc,
+        REFIID riid,
+        void** ppvObject);
+
+    HRESULT (STDMETHODCALLTYPE *GetObjectStorage)(
+        IOleItemContainer* This,
+        LPOLESTR pszItem,
+        IBindCtx* pbc,
+        REFIID riid,
+        void** ppvStorage);
+
+    HRESULT (STDMETHODCALLTYPE *IsRunning)(
+        IOleItemContainer* This,
+        LPOLESTR pszItem);
+
+};
+
+/*** IUnknown methods ***/
+#define IOleItemContainer_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define IOleItemContainer_AddRef(p) (p)->lpVtbl->AddRef(p)
+#define IOleItemContainer_Release(p) (p)->lpVtbl->Release(p)
+/*** IParseDisplayName methods ***/
+#define IOleItemContainer_ParseDisplayName(p,a,b,c,d) (p)->lpVtbl->ParseDisplayName(p,a,b,c,d)
+/*** IOleContainer methods ***/
+#define IOleItemContainer_EnumObjects(p,a,b) (p)->lpVtbl->EnumObjects(p,a,b)
+#define IOleItemContainer_LockContainer(p,a) (p)->lpVtbl->LockContainer(p,a)
+/*** IOleItemContainer methods ***/
+#define IOleItemContainer_GetObject(p,a,b,c,d,e) (p)->lpVtbl->GetObject(p,a,b,c,d,e)
+#define IOleItemContainer_GetObjectStorage(p,a,b,c,d) (p)->lpVtbl->GetObjectStorage(p,a,b,c,d)
+#define IOleItemContainer_IsRunning(p,a) (p)->lpVtbl->IsRunning(p,a)
+
+#endif
+
+#define IOleItemContainer_METHODS \
+    ICOM_MSVTABLE_COMPAT_FIELDS \
+    /*** IUnknown methods ***/ \
+    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE; \
+    STDMETHOD_(ULONG,Release)(THIS) PURE; \
+    /*** IParseDisplayName methods ***/ \
+    STDMETHOD_(HRESULT,ParseDisplayName)(THIS_ IBindCtx* pbc, LPOLESTR pszDisplayName, ULONG* pchEaten, IMoniker** ppmkOut) PURE; \
+    /*** IOleContainer methods ***/ \
+    STDMETHOD_(HRESULT,EnumObjects)(THIS_ DWORD grfFlags, IEnumUnknown** ppenum) PURE; \
+    STDMETHOD_(HRESULT,LockContainer)(THIS_ BOOL fLock) PURE; \
+    /*** IOleItemContainer methods ***/ \
+    STDMETHOD_(HRESULT,GetObject)(THIS_ LPOLESTR pszItem, DWORD dwSpeedNeeded, IBindCtx* pbc, REFIID riid, void** ppvObject) PURE; \
+    STDMETHOD_(HRESULT,GetObjectStorage)(THIS_ LPOLESTR pszItem, IBindCtx* pbc, REFIID riid, void** ppvStorage) PURE; \
+    STDMETHOD_(HRESULT,IsRunning)(THIS_ LPOLESTR pszItem) PURE;
+
+HRESULT CALLBACK IOleItemContainer_GetObject_Proxy(
+    IOleItemContainer* This,
+    LPOLESTR pszItem,
+    DWORD dwSpeedNeeded,
+    IBindCtx* pbc,
+    REFIID riid,
+    void** ppvObject);
+void __RPC_STUB IOleItemContainer_GetObject_Stub(
+    struct IRpcStubBuffer* This,
+    struct IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT CALLBACK IOleItemContainer_GetObjectStorage_Proxy(
+    IOleItemContainer* This,
+    LPOLESTR pszItem,
+    IBindCtx* pbc,
+    REFIID riid,
+    void** ppvStorage);
+void __RPC_STUB IOleItemContainer_GetObjectStorage_Stub(
+    struct IRpcStubBuffer* This,
+    struct IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT CALLBACK IOleItemContainer_IsRunning_Proxy(
+    IOleItemContainer* This,
+    LPOLESTR pszItem);
+void __RPC_STUB IOleItemContainer_IsRunning_Stub(
+    struct IRpcStubBuffer* This,
+    struct IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IOleItemContainer_INTERFACE_DEFINED__ */
+
+#ifndef __IOleLink_FWD_DEFINED__
+#define __IOleLink_FWD_DEFINED__
+typedef struct IOleLink IOleLink;
+#endif
+
+typedef IOleLink *LPOLELINK;
+
+typedef enum tagOLEUPDATE {
+    OLEUPDATE_ALWAYS = 1,
+    OLEUPDATE_ONCALL = 3
+} OLEUPDATE, *POLEUPDATE, *LPOLEUPDATE;
+
+typedef enum tagOLELINKBIND {
+    OLELINKBIND_EVENIFCLASSDIFF = 1
+} OLELINKBIND;
+
+/*****************************************************************************
+ * IOleLink interface
+ */
+#ifndef __IOleLink_INTERFACE_DEFINED__
+#define __IOleLink_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IOleLink, 0x0000011d, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+struct IOleLink : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE SetUpdateOptions(
+        DWORD dwUpdateOpt) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetUpdateOptions(
+        DWORD* pdwUpdateOpt) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetSourceMoniker(
+        IMoniker* pmk,
+        REFCLSID rclsid) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetSourceMoniker(
+        IMoniker** ppmk) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetSourceDisplayName(
+        LPCOLESTR pszStatusText) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetSourceDisplayName(
+        LPOLESTR* ppszDisplayName) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE BindToSource(
+        DWORD bindflags,
+        IBindCtx* pbc) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE BindIfRunning(
+        ) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetBoundSource(
+        IUnknown** ppunk) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE UnbindSource(
+        ) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Update(
+        IBindCtx* pbc) = 0;
+
+};
+#else
+typedef struct IOleLinkVtbl IOleLinkVtbl;
+struct IOleLink {
+    const IOleLinkVtbl* lpVtbl;
+};
+struct IOleLinkVtbl {
+    ICOM_MSVTABLE_COMPAT_FIELDS
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IOleLink* This,
+        REFIID riid,
+        void** ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IOleLink* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IOleLink* This);
+
+    /*** IOleLink methods ***/
+    HRESULT (STDMETHODCALLTYPE *SetUpdateOptions)(
+        IOleLink* This,
+        DWORD dwUpdateOpt);
+
+    HRESULT (STDMETHODCALLTYPE *GetUpdateOptions)(
+        IOleLink* This,
+        DWORD* pdwUpdateOpt);
+
+    HRESULT (STDMETHODCALLTYPE *SetSourceMoniker)(
+        IOleLink* This,
+        IMoniker* pmk,
+        REFCLSID rclsid);
+
+    HRESULT (STDMETHODCALLTYPE *GetSourceMoniker)(
+        IOleLink* This,
+        IMoniker** ppmk);
+
+    HRESULT (STDMETHODCALLTYPE *SetSourceDisplayName)(
+        IOleLink* This,
+        LPCOLESTR pszStatusText);
+
+    HRESULT (STDMETHODCALLTYPE *GetSourceDisplayName)(
+        IOleLink* This,
+        LPOLESTR* ppszDisplayName);
+
+    HRESULT (STDMETHODCALLTYPE *BindToSource)(
+        IOleLink* This,
+        DWORD bindflags,
+        IBindCtx* pbc);
+
+    HRESULT (STDMETHODCALLTYPE *BindIfRunning)(
+        IOleLink* This);
+
+    HRESULT (STDMETHODCALLTYPE *GetBoundSource)(
+        IOleLink* This,
+        IUnknown** ppunk);
+
+    HRESULT (STDMETHODCALLTYPE *UnbindSource)(
+        IOleLink* This);
+
+    HRESULT (STDMETHODCALLTYPE *Update)(
+        IOleLink* This,
+        IBindCtx* pbc);
+
+};
+
+/*** IUnknown methods ***/
+#define IOleLink_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define IOleLink_AddRef(p) (p)->lpVtbl->AddRef(p)
+#define IOleLink_Release(p) (p)->lpVtbl->Release(p)
+/*** IOleLink methods ***/
+#define IOleLink_SetUpdateOptions(p,a) (p)->lpVtbl->SetUpdateOptions(p,a)
+#define IOleLink_GetUpdateOptions(p,a) (p)->lpVtbl->GetUpdateOptions(p,a)
+#define IOleLink_SetSourceMoniker(p,a,b) (p)->lpVtbl->SetSourceMoniker(p,a,b)
+#define IOleLink_GetSourceMoniker(p,a) (p)->lpVtbl->GetSourceMoniker(p,a)
+#define IOleLink_SetSourceDisplayName(p,a) (p)->lpVtbl->SetSourceDisplayName(p,a)
+#define IOleLink_GetSourceDisplayName(p,a) (p)->lpVtbl->GetSourceDisplayName(p,a)
+#define IOleLink_BindToSource(p,a,b) (p)->lpVtbl->BindToSource(p,a,b)
+#define IOleLink_BindIfRunning(p) (p)->lpVtbl->BindIfRunning(p)
+#define IOleLink_GetBoundSource(p,a) (p)->lpVtbl->GetBoundSource(p,a)
+#define IOleLink_UnbindSource(p) (p)->lpVtbl->UnbindSource(p)
+#define IOleLink_Update(p,a) (p)->lpVtbl->Update(p,a)
+
+#endif
+
+#define IOleLink_METHODS \
+    ICOM_MSVTABLE_COMPAT_FIELDS \
+    /*** IUnknown methods ***/ \
+    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE; \
+    STDMETHOD_(ULONG,Release)(THIS) PURE; \
+    /*** IOleLink methods ***/ \
+    STDMETHOD_(HRESULT,SetUpdateOptions)(THIS_ DWORD dwUpdateOpt) PURE; \
+    STDMETHOD_(HRESULT,GetUpdateOptions)(THIS_ DWORD* pdwUpdateOpt) PURE; \
+    STDMETHOD_(HRESULT,SetSourceMoniker)(THIS_ IMoniker* pmk, REFCLSID rclsid) PURE; \
+    STDMETHOD_(HRESULT,GetSourceMoniker)(THIS_ IMoniker** ppmk) PURE; \
+    STDMETHOD_(HRESULT,SetSourceDisplayName)(THIS_ LPCOLESTR pszStatusText) PURE; \
+    STDMETHOD_(HRESULT,GetSourceDisplayName)(THIS_ LPOLESTR* ppszDisplayName) PURE; \
+    STDMETHOD_(HRESULT,BindToSource)(THIS_ DWORD bindflags, IBindCtx* pbc) PURE; \
+    STDMETHOD_(HRESULT,BindIfRunning)(THIS) PURE; \
+    STDMETHOD_(HRESULT,GetBoundSource)(THIS_ IUnknown** ppunk) PURE; \
+    STDMETHOD_(HRESULT,UnbindSource)(THIS) PURE; \
+    STDMETHOD_(HRESULT,Update)(THIS_ IBindCtx* pbc) PURE;
+
+HRESULT CALLBACK IOleLink_SetUpdateOptions_Proxy(
+    IOleLink* This,
+    DWORD dwUpdateOpt);
+void __RPC_STUB IOleLink_SetUpdateOptions_Stub(
+    struct IRpcStubBuffer* This,
+    struct IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT CALLBACK IOleLink_GetUpdateOptions_Proxy(
+    IOleLink* This,
+    DWORD* pdwUpdateOpt);
+void __RPC_STUB IOleLink_GetUpdateOptions_Stub(
+    struct IRpcStubBuffer* This,
+    struct IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT CALLBACK IOleLink_SetSourceMoniker_Proxy(
+    IOleLink* This,
+    IMoniker* pmk,
+    REFCLSID rclsid);
+void __RPC_STUB IOleLink_SetSourceMoniker_Stub(
+    struct IRpcStubBuffer* This,
+    struct IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT CALLBACK IOleLink_GetSourceMoniker_Proxy(
+    IOleLink* This,
+    IMoniker** ppmk);
+void __RPC_STUB IOleLink_GetSourceMoniker_Stub(
+    struct IRpcStubBuffer* This,
+    struct IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT CALLBACK IOleLink_SetSourceDisplayName_Proxy(
+    IOleLink* This,
+    LPCOLESTR pszStatusText);
+void __RPC_STUB IOleLink_SetSourceDisplayName_Stub(
+    struct IRpcStubBuffer* This,
+    struct IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT CALLBACK IOleLink_GetSourceDisplayName_Proxy(
+    IOleLink* This,
+    LPOLESTR* ppszDisplayName);
+void __RPC_STUB IOleLink_GetSourceDisplayName_Stub(
+    struct IRpcStubBuffer* This,
+    struct IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT CALLBACK IOleLink_BindToSource_Proxy(
+    IOleLink* This,
+    DWORD bindflags,
+    IBindCtx* pbc);
+void __RPC_STUB IOleLink_BindToSource_Stub(
+    struct IRpcStubBuffer* This,
+    struct IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT CALLBACK IOleLink_BindIfRunning_Proxy(
+    IOleLink* This);
+void __RPC_STUB IOleLink_BindIfRunning_Stub(
+    struct IRpcStubBuffer* This,
+    struct IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT CALLBACK IOleLink_GetBoundSource_Proxy(
+    IOleLink* This,
+    IUnknown** ppunk);
+void __RPC_STUB IOleLink_GetBoundSource_Stub(
+    struct IRpcStubBuffer* This,
+    struct IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT CALLBACK IOleLink_UnbindSource_Proxy(
+    IOleLink* This);
+void __RPC_STUB IOleLink_UnbindSource_Stub(
+    struct IRpcStubBuffer* This,
+    struct IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT CALLBACK IOleLink_Update_Proxy(
+    IOleLink* This,
+    IBindCtx* pbc);
+void __RPC_STUB IOleLink_Update_Stub(
+    struct IRpcStubBuffer* This,
+    struct IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IOleLink_INTERFACE_DEFINED__ */
+
+#ifndef __IOleClientSite_FWD_DEFINED__
+#define __IOleClientSite_FWD_DEFINED__
+typedef struct IOleClientSite IOleClientSite;
+#endif
+
+typedef IOleClientSite *LPOLECLIENTSITE;
+
+/*****************************************************************************
+ * IOleClientSite interface
+ */
+#ifndef __IOleClientSite_INTERFACE_DEFINED__
+#define __IOleClientSite_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IOleClientSite, 0x00000118, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+struct IOleClientSite : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE SaveObject(
+        ) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetMoniker(
+        DWORD dwAssign,
+        DWORD dwWhichMoniker,
+        IMoniker** ppmk) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetContainer(
+        IOleContainer** ppContainer) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE ShowObject(
+        ) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE OnShowWindow(
+        BOOL fShow) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE RequestNewObjectLayout(
+        ) = 0;
+
+};
+#else
+typedef struct IOleClientSiteVtbl IOleClientSiteVtbl;
+struct IOleClientSite {
+    const IOleClientSiteVtbl* lpVtbl;
+};
+struct IOleClientSiteVtbl {
+    ICOM_MSVTABLE_COMPAT_FIELDS
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IOleClientSite* This,
+        REFIID riid,
+        void** ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IOleClientSite* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IOleClientSite* This);
+
+    /*** IOleClientSite methods ***/
+    HRESULT (STDMETHODCALLTYPE *SaveObject)(
+        IOleClientSite* This);
+
+    HRESULT (STDMETHODCALLTYPE *GetMoniker)(
+        IOleClientSite* This,
+        DWORD dwAssign,
+        DWORD dwWhichMoniker,
+        IMoniker** ppmk);
+
+    HRESULT (STDMETHODCALLTYPE *GetContainer)(
+        IOleClientSite* This,
+        IOleContainer** ppContainer);
+
+    HRESULT (STDMETHODCALLTYPE *ShowObject)(
+        IOleClientSite* This);
+
+    HRESULT (STDMETHODCALLTYPE *OnShowWindow)(
+        IOleClientSite* This,
+        BOOL fShow);
+
+    HRESULT (STDMETHODCALLTYPE *RequestNewObjectLayout)(
+        IOleClientSite* This);
+
+};
+
+/*** IUnknown methods ***/
+#define IOleClientSite_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define IOleClientSite_AddRef(p) (p)->lpVtbl->AddRef(p)
+#define IOleClientSite_Release(p) (p)->lpVtbl->Release(p)
+/*** IOleClientSite methods ***/
+#define IOleClientSite_SaveObject(p) (p)->lpVtbl->SaveObject(p)
+#define IOleClientSite_GetMoniker(p,a,b,c) (p)->lpVtbl->GetMoniker(p,a,b,c)
+#define IOleClientSite_GetContainer(p,a) (p)->lpVtbl->GetContainer(p,a)
+#define IOleClientSite_ShowObject(p) (p)->lpVtbl->ShowObject(p)
+#define IOleClientSite_OnShowWindow(p,a) (p)->lpVtbl->OnShowWindow(p,a)
+#define IOleClientSite_RequestNewObjectLayout(p) (p)->lpVtbl->RequestNewObjectLayout(p)
+
+#endif
+
+#define IOleClientSite_METHODS \
+    ICOM_MSVTABLE_COMPAT_FIELDS \
+    /*** IUnknown methods ***/ \
+    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE; \
+    STDMETHOD_(ULONG,Release)(THIS) PURE; \
+    /*** IOleClientSite methods ***/ \
+    STDMETHOD_(HRESULT,SaveObject)(THIS) PURE; \
+    STDMETHOD_(HRESULT,GetMoniker)(THIS_ DWORD dwAssign, DWORD dwWhichMoniker, IMoniker** ppmk) PURE; \
+    STDMETHOD_(HRESULT,GetContainer)(THIS_ IOleContainer** ppContainer) PURE; \
+    STDMETHOD_(HRESULT,ShowObject)(THIS) PURE; \
+    STDMETHOD_(HRESULT,OnShowWindow)(THIS_ BOOL fShow) PURE; \
+    STDMETHOD_(HRESULT,RequestNewObjectLayout)(THIS) PURE;
+
+HRESULT CALLBACK IOleClientSite_SaveObject_Proxy(
+    IOleClientSite* This);
+void __RPC_STUB IOleClientSite_SaveObject_Stub(
+    struct IRpcStubBuffer* This,
+    struct IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT CALLBACK IOleClientSite_GetMoniker_Proxy(
+    IOleClientSite* This,
+    DWORD dwAssign,
+    DWORD dwWhichMoniker,
+    IMoniker** ppmk);
+void __RPC_STUB IOleClientSite_GetMoniker_Stub(
+    struct IRpcStubBuffer* This,
+    struct IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT CALLBACK IOleClientSite_GetContainer_Proxy(
+    IOleClientSite* This,
+    IOleContainer** ppContainer);
+void __RPC_STUB IOleClientSite_GetContainer_Stub(
+    struct IRpcStubBuffer* This,
+    struct IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT CALLBACK IOleClientSite_ShowObject_Proxy(
+    IOleClientSite* This);
+void __RPC_STUB IOleClientSite_ShowObject_Stub(
+    struct IRpcStubBuffer* This,
+    struct IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT CALLBACK IOleClientSite_OnShowWindow_Proxy(
+    IOleClientSite* This,
+    BOOL fShow);
+void __RPC_STUB IOleClientSite_OnShowWindow_Stub(
+    struct IRpcStubBuffer* This,
+    struct IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT CALLBACK IOleClientSite_RequestNewObjectLayout_Proxy(
+    IOleClientSite* This);
+void __RPC_STUB IOleClientSite_RequestNewObjectLayout_Stub(
+    struct IRpcStubBuffer* This,
+    struct IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IOleClientSite_INTERFACE_DEFINED__ */
+
+#ifndef __IOleCache_FWD_DEFINED__
+#define __IOleCache_FWD_DEFINED__
+typedef struct IOleCache IOleCache;
+#endif
+
+typedef IOleCache *LPOLECACHE;
+
+/*****************************************************************************
+ * IOleCache interface
+ */
+#ifndef __IOleCache_INTERFACE_DEFINED__
+#define __IOleCache_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IOleCache, 0x0000011e, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+struct IOleCache : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE Cache(
+        FORMATETC* pformatetc,
+        DWORD advf,
+        DWORD* pdwConnection) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Uncache(
+        DWORD dwConnection) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE EnumCache(
+        IEnumSTATDATA** ppenumSTATDATA) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE InitCache(
+        IDataObject* pDataObject) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetData(
+        FORMATETC* pformatetc,
+        STGMEDIUM* pmedium,
+        BOOL fRelease) = 0;
+
+};
+#else
+typedef struct IOleCacheVtbl IOleCacheVtbl;
+struct IOleCache {
+    const IOleCacheVtbl* lpVtbl;
+};
+struct IOleCacheVtbl {
+    ICOM_MSVTABLE_COMPAT_FIELDS
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IOleCache* This,
+        REFIID riid,
+        void** ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IOleCache* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IOleCache* This);
+
+    /*** IOleCache methods ***/
+    HRESULT (STDMETHODCALLTYPE *Cache)(
+        IOleCache* This,
+        FORMATETC* pformatetc,
+        DWORD advf,
+        DWORD* pdwConnection);
+
+    HRESULT (STDMETHODCALLTYPE *Uncache)(
+        IOleCache* This,
+        DWORD dwConnection);
+
+    HRESULT (STDMETHODCALLTYPE *EnumCache)(
+        IOleCache* This,
+        IEnumSTATDATA** ppenumSTATDATA);
+
+    HRESULT (STDMETHODCALLTYPE *InitCache)(
+        IOleCache* This,
+        IDataObject* pDataObject);
+
+    HRESULT (STDMETHODCALLTYPE *SetData)(
+        IOleCache* This,
+        FORMATETC* pformatetc,
+        STGMEDIUM* pmedium,
+        BOOL fRelease);
+
+};
+
+/*** IUnknown methods ***/
+#define IOleCache_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define IOleCache_AddRef(p) (p)->lpVtbl->AddRef(p)
+#define IOleCache_Release(p) (p)->lpVtbl->Release(p)
+/*** IOleCache methods ***/
+#define IOleCache_Cache(p,a,b,c) (p)->lpVtbl->Cache(p,a,b,c)
+#define IOleCache_Uncache(p,a) (p)->lpVtbl->Uncache(p,a)
+#define IOleCache_EnumCache(p,a) (p)->lpVtbl->EnumCache(p,a)
+#define IOleCache_InitCache(p,a) (p)->lpVtbl->InitCache(p,a)
+#define IOleCache_SetData(p,a,b,c) (p)->lpVtbl->SetData(p,a,b,c)
+
+#endif
+
+#define IOleCache_METHODS \
+    ICOM_MSVTABLE_COMPAT_FIELDS \
+    /*** IUnknown methods ***/ \
+    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE; \
+    STDMETHOD_(ULONG,Release)(THIS) PURE; \
+    /*** IOleCache methods ***/ \
+    STDMETHOD_(HRESULT,Cache)(THIS_ FORMATETC* pformatetc, DWORD advf, DWORD* pdwConnection) PURE; \
+    STDMETHOD_(HRESULT,Uncache)(THIS_ DWORD dwConnection) PURE; \
+    STDMETHOD_(HRESULT,EnumCache)(THIS_ IEnumSTATDATA** ppenumSTATDATA) PURE; \
+    STDMETHOD_(HRESULT,InitCache)(THIS_ IDataObject* pDataObject) PURE; \
+    STDMETHOD_(HRESULT,SetData)(THIS_ FORMATETC* pformatetc, STGMEDIUM* pmedium, BOOL fRelease) PURE;
+
+HRESULT CALLBACK IOleCache_Cache_Proxy(
+    IOleCache* This,
+    FORMATETC* pformatetc,
+    DWORD advf,
+    DWORD* pdwConnection);
+void __RPC_STUB IOleCache_Cache_Stub(
+    struct IRpcStubBuffer* This,
+    struct IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT CALLBACK IOleCache_Uncache_Proxy(
+    IOleCache* This,
+    DWORD dwConnection);
+void __RPC_STUB IOleCache_Uncache_Stub(
+    struct IRpcStubBuffer* This,
+    struct IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT CALLBACK IOleCache_EnumCache_Proxy(
+    IOleCache* This,
+    IEnumSTATDATA** ppenumSTATDATA);
+void __RPC_STUB IOleCache_EnumCache_Stub(
+    struct IRpcStubBuffer* This,
+    struct IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT CALLBACK IOleCache_InitCache_Proxy(
+    IOleCache* This,
+    IDataObject* pDataObject);
+void __RPC_STUB IOleCache_InitCache_Stub(
+    struct IRpcStubBuffer* This,
+    struct IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT CALLBACK IOleCache_SetData_Proxy(
+    IOleCache* This,
+    FORMATETC* pformatetc,
+    STGMEDIUM* pmedium,
+    BOOL fRelease);
+void __RPC_STUB IOleCache_SetData_Stub(
+    struct IRpcStubBuffer* This,
+    struct IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IOleCache_INTERFACE_DEFINED__ */
+
+#ifndef __IOleCache2_FWD_DEFINED__
+#define __IOleCache2_FWD_DEFINED__
+typedef struct IOleCache2 IOleCache2;
+#endif
+
+typedef IOleCache2 *LPOLECACHE2;
+
+#define UPDFCACHE_NODATACACHE (0x1)
+
+#define UPDFCACHE_ONSAVECACHE (0x2)
+
+#define UPDFCACHE_ONSTOPCACHE (0x4)
+
+#define UPDFCACHE_NORMALCACHE (0x8)
+
+#define UPDFCACHE_IFBLANK (0x10)
+
+#define UPDFCACHE_ONLYIFBLANK (0x80000000)
+
+#define UPDFCACHE_IFBLANKORONSAVECACHE (UPDFCACHE_IFBLANK | UPDFCACHE_ONSAVECACHE)
+
+#define UPDFCACHE_ALL ((DWORD)~UPDFCACHE_ONLYIFBLANK)
+
+#define UPDFCACHE_ALLBUTNODATACACHE (UPDFCACHE_ALL & (DWORD)~UPDFCACHE_NODATACACHE)
+
+typedef enum tagDISCARDCACHE {
+    DISCARDCACHE_SAVEIFDIRTY = 0,
+    DISCARDCACHE_NOSAVE = 1
+} DISCARDCACHE;
+
+/*****************************************************************************
+ * IOleCache2 interface
+ */
+#ifndef __IOleCache2_INTERFACE_DEFINED__
+#define __IOleCache2_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IOleCache2, 0x00000128, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+struct IOleCache2 : public IOleCache
+{
+    virtual HRESULT STDMETHODCALLTYPE UpdateCache(
+        LPDATAOBJECT pDataObject,
+        DWORD grfUpdf,
+        LPVOID pReserved) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE DiscardCache(
+        DWORD dwDiscardOptions) = 0;
+
+};
+#else
+typedef struct IOleCache2Vtbl IOleCache2Vtbl;
+struct IOleCache2 {
+    const IOleCache2Vtbl* lpVtbl;
+};
+struct IOleCache2Vtbl {
+    ICOM_MSVTABLE_COMPAT_FIELDS
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IOleCache2* This,
+        REFIID riid,
+        void** ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IOleCache2* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IOleCache2* This);
+
+    /*** IOleCache methods ***/
+    HRESULT (STDMETHODCALLTYPE *Cache)(
+        IOleCache2* This,
+        FORMATETC* pformatetc,
+        DWORD advf,
+        DWORD* pdwConnection);
+
+    HRESULT (STDMETHODCALLTYPE *Uncache)(
+        IOleCache2* This,
+        DWORD dwConnection);
+
+    HRESULT (STDMETHODCALLTYPE *EnumCache)(
+        IOleCache2* This,
+        IEnumSTATDATA** ppenumSTATDATA);
+
+    HRESULT (STDMETHODCALLTYPE *InitCache)(
+        IOleCache2* This,
+        IDataObject* pDataObject);
+
+    HRESULT (STDMETHODCALLTYPE *SetData)(
+        IOleCache2* This,
+        FORMATETC* pformatetc,
+        STGMEDIUM* pmedium,
+        BOOL fRelease);
+
+    /*** IOleCache2 methods ***/
+    HRESULT (STDMETHODCALLTYPE *UpdateCache)(
+        IOleCache2* This,
+        LPDATAOBJECT pDataObject,
+        DWORD grfUpdf,
+        LPVOID pReserved);
+
+    HRESULT (STDMETHODCALLTYPE *DiscardCache)(
+        IOleCache2* This,
+        DWORD dwDiscardOptions);
+
+};
+
+/*** IUnknown methods ***/
+#define IOleCache2_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define IOleCache2_AddRef(p) (p)->lpVtbl->AddRef(p)
+#define IOleCache2_Release(p) (p)->lpVtbl->Release(p)
+/*** IOleCache methods ***/
+#define IOleCache2_Cache(p,a,b,c) (p)->lpVtbl->Cache(p,a,b,c)
+#define IOleCache2_Uncache(p,a) (p)->lpVtbl->Uncache(p,a)
+#define IOleCache2_EnumCache(p,a) (p)->lpVtbl->EnumCache(p,a)
+#define IOleCache2_InitCache(p,a) (p)->lpVtbl->InitCache(p,a)
+#define IOleCache2_SetData(p,a,b,c) (p)->lpVtbl->SetData(p,a,b,c)
+/*** IOleCache2 methods ***/
+#define IOleCache2_UpdateCache(p,a,b,c) (p)->lpVtbl->UpdateCache(p,a,b,c)
+#define IOleCache2_DiscardCache(p,a) (p)->lpVtbl->DiscardCache(p,a)
+
+#endif
+
+#define IOleCache2_METHODS \
+    ICOM_MSVTABLE_COMPAT_FIELDS \
+    /*** IUnknown methods ***/ \
+    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE; \
+    STDMETHOD_(ULONG,Release)(THIS) PURE; \
+    /*** IOleCache methods ***/ \
+    STDMETHOD_(HRESULT,Cache)(THIS_ FORMATETC* pformatetc, DWORD advf, DWORD* pdwConnection) PURE; \
+    STDMETHOD_(HRESULT,Uncache)(THIS_ DWORD dwConnection) PURE; \
+    STDMETHOD_(HRESULT,EnumCache)(THIS_ IEnumSTATDATA** ppenumSTATDATA) PURE; \
+    STDMETHOD_(HRESULT,InitCache)(THIS_ IDataObject* pDataObject) PURE; \
+    STDMETHOD_(HRESULT,SetData)(THIS_ FORMATETC* pformatetc, STGMEDIUM* pmedium, BOOL fRelease) PURE; \
+    /*** IOleCache2 methods ***/ \
+    STDMETHOD_(HRESULT,UpdateCache)(THIS_ LPDATAOBJECT pDataObject, DWORD grfUpdf, LPVOID pReserved) PURE; \
+    STDMETHOD_(HRESULT,DiscardCache)(THIS_ DWORD dwDiscardOptions) PURE;
+
+HRESULT CALLBACK IOleCache2_RemoteUpdateCache_Proxy(
+    IOleCache2* This,
+    LPDATAOBJECT pDataObject,
+    DWORD grfUpdf,
+    LONG_PTR pReserved);
+void __RPC_STUB IOleCache2_RemoteUpdateCache_Stub(
+    struct IRpcStubBuffer* This,
+    struct IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT CALLBACK IOleCache2_UpdateCache_Proxy(
+    IOleCache2* This,
+    LPDATAOBJECT pDataObject,
+    DWORD grfUpdf,
+    LPVOID pReserved);
+HRESULT __RPC_STUB IOleCache2_UpdateCache_Stub(
+    IOleCache2* This,
+    LPDATAOBJECT pDataObject,
+    DWORD grfUpdf,
+    LONG_PTR pReserved);
+HRESULT CALLBACK IOleCache2_DiscardCache_Proxy(
+    IOleCache2* This,
+    DWORD dwDiscardOptions);
+void __RPC_STUB IOleCache2_DiscardCache_Stub(
+    struct IRpcStubBuffer* This,
+    struct IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IOleCache2_INTERFACE_DEFINED__ */
+
+#ifndef __IOleCacheControl_FWD_DEFINED__
+#define __IOleCacheControl_FWD_DEFINED__
+typedef struct IOleCacheControl IOleCacheControl;
+#endif
+
+typedef IOleCacheControl *LPOLECACHECONTROL;
+
+/*****************************************************************************
+ * IOleCacheControl interface
+ */
+#ifndef __IOleCacheControl_INTERFACE_DEFINED__
+#define __IOleCacheControl_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IOleCacheControl, 0x00000129, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+struct IOleCacheControl : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE OnRun(
+        LPDATAOBJECT pDataObject) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE OnStop(
+        ) = 0;
+
+};
+#else
+typedef struct IOleCacheControlVtbl IOleCacheControlVtbl;
+struct IOleCacheControl {
+    const IOleCacheControlVtbl* lpVtbl;
+};
+struct IOleCacheControlVtbl {
+    ICOM_MSVTABLE_COMPAT_FIELDS
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IOleCacheControl* This,
+        REFIID riid,
+        void** ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IOleCacheControl* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IOleCacheControl* This);
+
+    /*** IOleCacheControl methods ***/
+    HRESULT (STDMETHODCALLTYPE *OnRun)(
+        IOleCacheControl* This,
+        LPDATAOBJECT pDataObject);
+
+    HRESULT (STDMETHODCALLTYPE *OnStop)(
+        IOleCacheControl* This);
+
+};
+
+/*** IUnknown methods ***/
+#define IOleCacheControl_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define IOleCacheControl_AddRef(p) (p)->lpVtbl->AddRef(p)
+#define IOleCacheControl_Release(p) (p)->lpVtbl->Release(p)
+/*** IOleCacheControl methods ***/
+#define IOleCacheControl_OnRun(p,a) (p)->lpVtbl->OnRun(p,a)
+#define IOleCacheControl_OnStop(p) (p)->lpVtbl->OnStop(p)
+
+#endif
+
+#define IOleCacheControl_METHODS \
+    ICOM_MSVTABLE_COMPAT_FIELDS \
+    /*** IUnknown methods ***/ \
+    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE; \
+    STDMETHOD_(ULONG,Release)(THIS) PURE; \
+    /*** IOleCacheControl methods ***/ \
+    STDMETHOD_(HRESULT,OnRun)(THIS_ LPDATAOBJECT pDataObject) PURE; \
+    STDMETHOD_(HRESULT,OnStop)(THIS) PURE;
+
+HRESULT CALLBACK IOleCacheControl_OnRun_Proxy(
+    IOleCacheControl* This,
+    LPDATAOBJECT pDataObject);
+void __RPC_STUB IOleCacheControl_OnRun_Stub(
+    struct IRpcStubBuffer* This,
+    struct IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT CALLBACK IOleCacheControl_OnStop_Proxy(
+    IOleCacheControl* This);
+void __RPC_STUB IOleCacheControl_OnStop_Stub(
+    struct IRpcStubBuffer* This,
+    struct IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IOleCacheControl_INTERFACE_DEFINED__ */
+
+#ifndef __IEnumOLEVERB_FWD_DEFINED__
+#define __IEnumOLEVERB_FWD_DEFINED__
+typedef struct IEnumOLEVERB IEnumOLEVERB;
+#endif
+
+typedef IEnumOLEVERB *LPENUMOLEVERB;
+
+typedef struct tagOLEVERB {
+    LONG lVerb;
+    LPOLESTR lpszVerbName;
+    DWORD fuFlags;
+    DWORD grfAttribs;
+} OLEVERB, *LPOLEVERB;
+
+typedef enum tagOLEVERBATTRIB {
+    OLEVERBATTRIB_NEVERDIRTIES = 1,
+    OLEVERBATTRIB_ONCONTAINERMENU = 2
+} OLEVERBATTRIB;
+
+/*****************************************************************************
+ * IEnumOLEVERB interface
+ */
+#ifndef __IEnumOLEVERB_INTERFACE_DEFINED__
+#define __IEnumOLEVERB_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IEnumOLEVERB, 0x00000104, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+struct IEnumOLEVERB : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE Next(
+        ULONG celt,
+        LPOLEVERB rgelt,
+        ULONG* pceltFetched) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Skip(
+        ULONG celt) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Reset(
+        ) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Clone(
+        IEnumOLEVERB** ppenum) = 0;
+
+};
+#else
+typedef struct IEnumOLEVERBVtbl IEnumOLEVERBVtbl;
+struct IEnumOLEVERB {
+    const IEnumOLEVERBVtbl* lpVtbl;
+};
+struct IEnumOLEVERBVtbl {
+    ICOM_MSVTABLE_COMPAT_FIELDS
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IEnumOLEVERB* This,
+        REFIID riid,
+        void** ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IEnumOLEVERB* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IEnumOLEVERB* This);
+
+    /*** IEnumOLEVERB methods ***/
+    HRESULT (STDMETHODCALLTYPE *Next)(
+        IEnumOLEVERB* This,
+        ULONG celt,
+        LPOLEVERB rgelt,
+        ULONG* pceltFetched);
+
+    HRESULT (STDMETHODCALLTYPE *Skip)(
+        IEnumOLEVERB* This,
+        ULONG celt);
+
+    HRESULT (STDMETHODCALLTYPE *Reset)(
+        IEnumOLEVERB* This);
+
+    HRESULT (STDMETHODCALLTYPE *Clone)(
+        IEnumOLEVERB* This,
+        IEnumOLEVERB** ppenum);
+
+};
+
+/*** IUnknown methods ***/
+#define IEnumOLEVERB_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define IEnumOLEVERB_AddRef(p) (p)->lpVtbl->AddRef(p)
+#define IEnumOLEVERB_Release(p) (p)->lpVtbl->Release(p)
+/*** IEnumOLEVERB methods ***/
+#define IEnumOLEVERB_Next(p,a,b,c) (p)->lpVtbl->Next(p,a,b,c)
+#define IEnumOLEVERB_Skip(p,a) (p)->lpVtbl->Skip(p,a)
+#define IEnumOLEVERB_Reset(p) (p)->lpVtbl->Reset(p)
+#define IEnumOLEVERB_Clone(p,a) (p)->lpVtbl->Clone(p,a)
+
+#endif
+
+#define IEnumOLEVERB_METHODS \
+    ICOM_MSVTABLE_COMPAT_FIELDS \
+    /*** IUnknown methods ***/ \
+    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE; \
+    STDMETHOD_(ULONG,Release)(THIS) PURE; \
+    /*** IEnumOLEVERB methods ***/ \
+    STDMETHOD_(HRESULT,Next)(THIS_ ULONG celt, LPOLEVERB rgelt, ULONG* pceltFetched) PURE; \
+    STDMETHOD_(HRESULT,Skip)(THIS_ ULONG celt) PURE; \
+    STDMETHOD_(HRESULT,Reset)(THIS) PURE; \
+    STDMETHOD_(HRESULT,Clone)(THIS_ IEnumOLEVERB** ppenum) PURE;
+
+HRESULT CALLBACK IEnumOLEVERB_RemoteNext_Proxy(
+    IEnumOLEVERB* This,
+    ULONG celt,
+    LPOLEVERB rgelt,
+    ULONG* pceltFetched);
+void __RPC_STUB IEnumOLEVERB_RemoteNext_Stub(
+    struct IRpcStubBuffer* This,
+    struct IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT CALLBACK IEnumOLEVERB_Next_Proxy(
+    IEnumOLEVERB* This,
+    ULONG celt,
+    LPOLEVERB rgelt,
+    ULONG* pceltFetched);
+HRESULT __RPC_STUB IEnumOLEVERB_Next_Stub(
+    IEnumOLEVERB* This,
+    ULONG celt,
+    LPOLEVERB rgelt,
+    ULONG* pceltFetched);
+HRESULT CALLBACK IEnumOLEVERB_Skip_Proxy(
+    IEnumOLEVERB* This,
+    ULONG celt);
+void __RPC_STUB IEnumOLEVERB_Skip_Stub(
+    struct IRpcStubBuffer* This,
+    struct IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT CALLBACK IEnumOLEVERB_Reset_Proxy(
+    IEnumOLEVERB* This);
+void __RPC_STUB IEnumOLEVERB_Reset_Stub(
+    struct IRpcStubBuffer* This,
+    struct IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT CALLBACK IEnumOLEVERB_Clone_Proxy(
+    IEnumOLEVERB* This,
+    IEnumOLEVERB** ppenum);
+void __RPC_STUB IEnumOLEVERB_Clone_Stub(
+    struct IRpcStubBuffer* This,
+    struct IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IEnumOLEVERB_INTERFACE_DEFINED__ */
+
+#ifndef __IOleObject_FWD_DEFINED__
+#define __IOleObject_FWD_DEFINED__
+typedef struct IOleObject IOleObject;
+#endif
+
+typedef IOleObject *LPOLEOBJECT;
+
+typedef enum tagOLEGETMONIKER {
+    OLEGETMONIKER_ONLYIFTHERE = 1,
+    OLEGETMONIKER_FORCEASSIGN = 2,
+    OLEGETMONIKER_UNASSIGN = 3,
+    OLEGETMONIKER_TEMPFORUSER = 4
+} OLEGETMONIKER;
+
+typedef enum tagOLEWHICHMK {
+    OLEWHICHMK_CONTAINER = 1,
+    OLEWHICHMK_OBJREL = 2,
+    OLEWHICHMK_OBJFULL = 3
+} OLEWHICHMK;
+
+typedef enum tagUSERCLASSTYPE {
+    USERCLASSTYPE_FULL = 1,
+    USERCLASSTYPE_SHORT = 2,
+    USERCLASSTYPE_APPNAME = 3
+} USERCLASSTYPE;
+
+typedef enum tagOLEMISC {
+    OLEMISC_RECOMPOSEONRESIZE = 0x1,
+    OLEMISC_ONLYICONIC = 0x2,
+    OLEMISC_INSERTNOTREPLACE = 0x4,
+    OLEMISC_STATIC = 0x8,
+    OLEMISC_CANTLINKINSIDE = 0x10,
+    OLEMISC_CANLINKBYOLE1 = 0x20,
+    OLEMISC_ISLINKOBJECT = 0x40,
+    OLEMISC_INSIDEOUT = 0x80,
+    OLEMISC_ACTIVATEWHENVISIBLE = 0x100,
+    OLEMISC_RENDERINGISDEVICEINDEPENDENT = 0x200,
+    OLEMISC_INVISIBLEATRUNTIME = 0x400,
+    OLEMISC_ALWAYSRUN = 0x800,
+    OLEMISC_ACTSLIKEBUTTON = 0x1000,
+    OLEMISC_ACTSLIKELABEL = 0x2000,
+    OLEMISC_NOUIACTIVATE = 0x4000,
+    OLEMISC_ALIGNABLE = 0x8000,
+    OLEMISC_SIMPLEFRAME = 0x10000,
+    OLEMISC_SETCLIENTSITEFIRST = 0x20000,
+    OLEMISC_IMEMODE = 0x40000,
+    OLEMISC_IGNOREACTIVATEWHENVISIBLE = 0x80000,
+    OLEMISC_WANTSTOMENUMERGE = 0x100000,
+    OLEMISC_SUPPORTSMULTILEVELUNDO = 0x200000
+} OLEMISC;
+
+typedef enum tagOLECLOSE {
+    OLECLOSE_SAVEIFDIRTY = 0,
+    OLECLOSE_NOSAVE = 1,
+    OLECLOSE_PROMPTSAVE = 2
+} OLECLOSE;
+
+struct tagLOGPALETTE;
+/*****************************************************************************
+ * IOleObject interface
+ */
+#ifndef __IOleObject_INTERFACE_DEFINED__
+#define __IOleObject_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IOleObject, 0x00000112, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+struct IOleObject : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE SetClientSite(
+        IOleClientSite* pClientSite) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetClientSite(
+        IOleClientSite** ppClientSite) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetHostNames(
+        LPCOLESTR szContainerApp,
+        LPCOLESTR szContainerObj) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Close(
+        DWORD dwSaveOption) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetMoniker(
+        DWORD dwWhichMoniker,
+        IMoniker* pmk) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetMoniker(
+        DWORD dwAssign,
+        DWORD dwWhichMoniker,
+        IMoniker** ppmk) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE InitFromData(
+        IDataObject* pDataObject,
+        BOOL fCreation,
+        DWORD dwReserved) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetClipboardData(
+        DWORD dwReserved,
+        IDataObject** ppDataObject) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE DoVerb(
+        LONG iVerb,
+        struct tagMSG* lpmsg,
+        IOleClientSite* pActiveSite,
+        LONG lindex,
+        HWND hwndParent,
+        LPCRECT lprcPosRect) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE EnumVerbs(
+        IEnumOLEVERB** ppEnumOleVerb) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Update(
+        ) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE IsUpToDate(
+        ) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetUserClassID(
+        CLSID* pClsid) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetUserType(
+        DWORD dwFormOfType,
+        LPOLESTR* pszUserType) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetExtent(
+        DWORD dwDrawAspect,
+        SIZEL* psizel) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetExtent(
+        DWORD dwDrawAspect,
+        SIZEL* psizel) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Advise(
+        IAdviseSink* pAdvSink,
+        DWORD* pdwConnection) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Unadvise(
+        DWORD dwConnection) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE EnumAdvise(
+        IEnumSTATDATA** ppenumAdvise) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetMiscStatus(
+        DWORD dwAspect,
+        DWORD* pdwStatus) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetColorScheme(
+        struct tagLOGPALETTE {
+            WORD palVersion;
+            WORD palNumEntries;
+            PALETTEENTRY palPalEntry[1];
+        }* pLogpal) = 0;
+
+};
+#else
+typedef struct IOleObjectVtbl IOleObjectVtbl;
+struct IOleObject {
+    const IOleObjectVtbl* lpVtbl;
+};
+struct IOleObjectVtbl {
+    ICOM_MSVTABLE_COMPAT_FIELDS
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IOleObject* This,
+        REFIID riid,
+        void** ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IOleObject* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IOleObject* This);
+
+    /*** IOleObject methods ***/
+    HRESULT (STDMETHODCALLTYPE *SetClientSite)(
+        IOleObject* This,
+        IOleClientSite* pClientSite);
+
+    HRESULT (STDMETHODCALLTYPE *GetClientSite)(
+        IOleObject* This,
+        IOleClientSite** ppClientSite);
+
+    HRESULT (STDMETHODCALLTYPE *SetHostNames)(
+        IOleObject* This,
+        LPCOLESTR szContainerApp,
+        LPCOLESTR szContainerObj);
+
+    HRESULT (STDMETHODCALLTYPE *Close)(
+        IOleObject* This,
+        DWORD dwSaveOption);
+
+    HRESULT (STDMETHODCALLTYPE *SetMoniker)(
+        IOleObject* This,
+        DWORD dwWhichMoniker,
+        IMoniker* pmk);
+
+    HRESULT (STDMETHODCALLTYPE *GetMoniker)(
+        IOleObject* This,
+        DWORD dwAssign,
+        DWORD dwWhichMoniker,
+        IMoniker** ppmk);
+
+    HRESULT (STDMETHODCALLTYPE *InitFromData)(
+        IOleObject* This,
+        IDataObject* pDataObject,
+        BOOL fCreation,
+        DWORD dwReserved);
+
+    HRESULT (STDMETHODCALLTYPE *GetClipboardData)(
+        IOleObject* This,
+        DWORD dwReserved,
+        IDataObject** ppDataObject);
+
+    HRESULT (STDMETHODCALLTYPE *DoVerb)(
+        IOleObject* This,
+        LONG iVerb,
+        struct tagMSG* lpmsg,
+        IOleClientSite* pActiveSite,
+        LONG lindex,
+        HWND hwndParent,
+        LPCRECT lprcPosRect);
+
+    HRESULT (STDMETHODCALLTYPE *EnumVerbs)(
+        IOleObject* This,
+        IEnumOLEVERB** ppEnumOleVerb);
+
+    HRESULT (STDMETHODCALLTYPE *Update)(
+        IOleObject* This);
+
+    HRESULT (STDMETHODCALLTYPE *IsUpToDate)(
+        IOleObject* This);
+
+    HRESULT (STDMETHODCALLTYPE *GetUserClassID)(
+        IOleObject* This,
+        CLSID* pClsid);
+
+    HRESULT (STDMETHODCALLTYPE *GetUserType)(
+        IOleObject* This,
+        DWORD dwFormOfType,
+        LPOLESTR* pszUserType);
+
+    HRESULT (STDMETHODCALLTYPE *SetExtent)(
+        IOleObject* This,
+        DWORD dwDrawAspect,
+        SIZEL* psizel);
+
+    HRESULT (STDMETHODCALLTYPE *GetExtent)(
+        IOleObject* This,
+        DWORD dwDrawAspect,
+        SIZEL* psizel);
+
+    HRESULT (STDMETHODCALLTYPE *Advise)(
+        IOleObject* This,
+        IAdviseSink* pAdvSink,
+        DWORD* pdwConnection);
+
+    HRESULT (STDMETHODCALLTYPE *Unadvise)(
+        IOleObject* This,
+        DWORD dwConnection);
+
+    HRESULT (STDMETHODCALLTYPE *EnumAdvise)(
+        IOleObject* This,
+        IEnumSTATDATA** ppenumAdvise);
+
+    HRESULT (STDMETHODCALLTYPE *GetMiscStatus)(
+        IOleObject* This,
+        DWORD dwAspect,
+        DWORD* pdwStatus);
+
+    HRESULT (STDMETHODCALLTYPE *SetColorScheme)(
+        IOleObject* This,
+        struct tagLOGPALETTE* pLogpal);
+
+};
+
+/*** IUnknown methods ***/
+#define IOleObject_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define IOleObject_AddRef(p) (p)->lpVtbl->AddRef(p)
+#define IOleObject_Release(p) (p)->lpVtbl->Release(p)
+/*** IOleObject methods ***/
+#define IOleObject_SetClientSite(p,a) (p)->lpVtbl->SetClientSite(p,a)
+#define IOleObject_GetClientSite(p,a) (p)->lpVtbl->GetClientSite(p,a)
+#define IOleObject_SetHostNames(p,a,b) (p)->lpVtbl->SetHostNames(p,a,b)
+#define IOleObject_Close(p,a) (p)->lpVtbl->Close(p,a)
+#define IOleObject_SetMoniker(p,a,b) (p)->lpVtbl->SetMoniker(p,a,b)
+#define IOleObject_GetMoniker(p,a,b,c) (p)->lpVtbl->GetMoniker(p,a,b,c)
+#define IOleObject_InitFromData(p,a,b,c) (p)->lpVtbl->InitFromData(p,a,b,c)
+#define IOleObject_GetClipboardData(p,a,b) (p)->lpVtbl->GetClipboardData(p,a,b)
+#define IOleObject_DoVerb(p,a,b,c,d,e,f) (p)->lpVtbl->DoVerb(p,a,b,c,d,e,f)
+#define IOleObject_EnumVerbs(p,a) (p)->lpVtbl->EnumVerbs(p,a)
+#define IOleObject_Update(p) (p)->lpVtbl->Update(p)
+#define IOleObject_IsUpToDate(p) (p)->lpVtbl->IsUpToDate(p)
+#define IOleObject_GetUserClassID(p,a) (p)->lpVtbl->GetUserClassID(p,a)
+#define IOleObject_GetUserType(p,a,b) (p)->lpVtbl->GetUserType(p,a,b)
+#define IOleObject_SetExtent(p,a,b) (p)->lpVtbl->SetExtent(p,a,b)
+#define IOleObject_GetExtent(p,a,b) (p)->lpVtbl->GetExtent(p,a,b)
+#define IOleObject_Advise(p,a,b) (p)->lpVtbl->Advise(p,a,b)
+#define IOleObject_Unadvise(p,a) (p)->lpVtbl->Unadvise(p,a)
+#define IOleObject_EnumAdvise(p,a) (p)->lpVtbl->EnumAdvise(p,a)
+#define IOleObject_GetMiscStatus(p,a,b) (p)->lpVtbl->GetMiscStatus(p,a,b)
+#define IOleObject_SetColorScheme(p,a) (p)->lpVtbl->SetColorScheme(p,a)
+
+#endif
+
+#define IOleObject_METHODS \
+    ICOM_MSVTABLE_COMPAT_FIELDS \
+    /*** IUnknown methods ***/ \
+    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE; \
+    STDMETHOD_(ULONG,Release)(THIS) PURE; \
+    /*** IOleObject methods ***/ \
+    STDMETHOD_(HRESULT,SetClientSite)(THIS_ IOleClientSite* pClientSite) PURE; \
+    STDMETHOD_(HRESULT,GetClientSite)(THIS_ IOleClientSite** ppClientSite) PURE; \
+    STDMETHOD_(HRESULT,SetHostNames)(THIS_ LPCOLESTR szContainerApp, LPCOLESTR szContainerObj) PURE; \
+    STDMETHOD_(HRESULT,Close)(THIS_ DWORD dwSaveOption) PURE; \
+    STDMETHOD_(HRESULT,SetMoniker)(THIS_ DWORD dwWhichMoniker, IMoniker* pmk) PURE; \
+    STDMETHOD_(HRESULT,GetMoniker)(THIS_ DWORD dwAssign, DWORD dwWhichMoniker, IMoniker** ppmk) PURE; \
+    STDMETHOD_(HRESULT,InitFromData)(THIS_ IDataObject* pDataObject, BOOL fCreation, DWORD dwReserved) PURE; \
+    STDMETHOD_(HRESULT,GetClipboardData)(THIS_ DWORD dwReserved, IDataObject** ppDataObject) PURE; \
+    STDMETHOD_(HRESULT,DoVerb)(THIS_ LONG iVerb, struct tagMSG* lpmsg, IOleClientSite* pActiveSite, LONG lindex, HWND hwndParent, LPCRECT lprcPosRect) PURE; \
+    STDMETHOD_(HRESULT,EnumVerbs)(THIS_ IEnumOLEVERB** ppEnumOleVerb) PURE; \
+    STDMETHOD_(HRESULT,Update)(THIS) PURE; \
+    STDMETHOD_(HRESULT,IsUpToDate)(THIS) PURE; \
+    STDMETHOD_(HRESULT,GetUserClassID)(THIS_ CLSID* pClsid) PURE; \
+    STDMETHOD_(HRESULT,GetUserType)(THIS_ DWORD dwFormOfType, LPOLESTR* pszUserType) PURE; \
+    STDMETHOD_(HRESULT,SetExtent)(THIS_ DWORD dwDrawAspect, SIZEL* psizel) PURE; \
+    STDMETHOD_(HRESULT,GetExtent)(THIS_ DWORD dwDrawAspect, SIZEL* psizel) PURE; \
+    STDMETHOD_(HRESULT,Advise)(THIS_ IAdviseSink* pAdvSink, DWORD* pdwConnection) PURE; \
+    STDMETHOD_(HRESULT,Unadvise)(THIS_ DWORD dwConnection) PURE; \
+    STDMETHOD_(HRESULT,EnumAdvise)(THIS_ IEnumSTATDATA** ppenumAdvise) PURE; \
+    STDMETHOD_(HRESULT,GetMiscStatus)(THIS_ DWORD dwAspect, DWORD* pdwStatus) PURE; \
+    STDMETHOD_(HRESULT,SetColorScheme)(THIS_ struct tagLOGPALETTE* pLogpal) PURE;
+
+HRESULT CALLBACK IOleObject_SetClientSite_Proxy(
+    IOleObject* This,
+    IOleClientSite* pClientSite);
+void __RPC_STUB IOleObject_SetClientSite_Stub(
+    struct IRpcStubBuffer* This,
+    struct IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT CALLBACK IOleObject_GetClientSite_Proxy(
+    IOleObject* This,
+    IOleClientSite** ppClientSite);
+void __RPC_STUB IOleObject_GetClientSite_Stub(
+    struct IRpcStubBuffer* This,
+    struct IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT CALLBACK IOleObject_SetHostNames_Proxy(
+    IOleObject* This,
+    LPCOLESTR szContainerApp,
+    LPCOLESTR szContainerObj);
+void __RPC_STUB IOleObject_SetHostNames_Stub(
+    struct IRpcStubBuffer* This,
+    struct IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT CALLBACK IOleObject_Close_Proxy(
+    IOleObject* This,
+    DWORD dwSaveOption);
+void __RPC_STUB IOleObject_Close_Stub(
+    struct IRpcStubBuffer* This,
+    struct IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT CALLBACK IOleObject_SetMoniker_Proxy(
+    IOleObject* This,
+    DWORD dwWhichMoniker,
+    IMoniker* pmk);
+void __RPC_STUB IOleObject_SetMoniker_Stub(
+    struct IRpcStubBuffer* This,
+    struct IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT CALLBACK IOleObject_GetMoniker_Proxy(
+    IOleObject* This,
+    DWORD dwAssign,
+    DWORD dwWhichMoniker,
+    IMoniker** ppmk);
+void __RPC_STUB IOleObject_GetMoniker_Stub(
+    struct IRpcStubBuffer* This,
+    struct IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT CALLBACK IOleObject_InitFromData_Proxy(
+    IOleObject* This,
+    IDataObject* pDataObject,
+    BOOL fCreation,
+    DWORD dwReserved);
+void __RPC_STUB IOleObject_InitFromData_Stub(
+    struct IRpcStubBuffer* This,
+    struct IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT CALLBACK IOleObject_GetClipboardData_Proxy(
+    IOleObject* This,
+    DWORD dwReserved,
+    IDataObject** ppDataObject);
+void __RPC_STUB IOleObject_GetClipboardData_Stub(
+    struct IRpcStubBuffer* This,
+    struct IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT CALLBACK IOleObject_DoVerb_Proxy(
+    IOleObject* This,
+    LONG iVerb,
+    struct tagMSG* lpmsg,
+    IOleClientSite* pActiveSite,
+    LONG lindex,
+    HWND hwndParent,
+    LPCRECT lprcPosRect);
+void __RPC_STUB IOleObject_DoVerb_Stub(
+    struct IRpcStubBuffer* This,
+    struct IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT CALLBACK IOleObject_EnumVerbs_Proxy(
+    IOleObject* This,
+    IEnumOLEVERB** ppEnumOleVerb);
+void __RPC_STUB IOleObject_EnumVerbs_Stub(
+    struct IRpcStubBuffer* This,
+    struct IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT CALLBACK IOleObject_Update_Proxy(
+    IOleObject* This);
+void __RPC_STUB IOleObject_Update_Stub(
+    struct IRpcStubBuffer* This,
+    struct IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT CALLBACK IOleObject_IsUpToDate_Proxy(
+    IOleObject* This);
+void __RPC_STUB IOleObject_IsUpToDate_Stub(
+    struct IRpcStubBuffer* This,
+    struct IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT CALLBACK IOleObject_GetUserClassID_Proxy(
+    IOleObject* This,
+    CLSID* pClsid);
+void __RPC_STUB IOleObject_GetUserClassID_Stub(
+    struct IRpcStubBuffer* This,
+    struct IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT CALLBACK IOleObject_GetUserType_Proxy(
+    IOleObject* This,
+    DWORD dwFormOfType,
+    LPOLESTR* pszUserType);
+void __RPC_STUB IOleObject_GetUserType_Stub(
+    struct IRpcStubBuffer* This,
+    struct IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT CALLBACK IOleObject_SetExtent_Proxy(
+    IOleObject* This,
+    DWORD dwDrawAspect,
+    SIZEL* psizel);
+void __RPC_STUB IOleObject_SetExtent_Stub(
+    struct IRpcStubBuffer* This,
+    struct IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT CALLBACK IOleObject_GetExtent_Proxy(
+    IOleObject* This,
+    DWORD dwDrawAspect,
+    SIZEL* psizel);
+void __RPC_STUB IOleObject_GetExtent_Stub(
+    struct IRpcStubBuffer* This,
+    struct IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT CALLBACK IOleObject_Advise_Proxy(
+    IOleObject* This,
+    IAdviseSink* pAdvSink,
+    DWORD* pdwConnection);
+void __RPC_STUB IOleObject_Advise_Stub(
+    struct IRpcStubBuffer* This,
+    struct IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT CALLBACK IOleObject_Unadvise_Proxy(
+    IOleObject* This,
+    DWORD dwConnection);
+void __RPC_STUB IOleObject_Unadvise_Stub(
+    struct IRpcStubBuffer* This,
+    struct IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT CALLBACK IOleObject_EnumAdvise_Proxy(
+    IOleObject* This,
+    IEnumSTATDATA** ppenumAdvise);
+void __RPC_STUB IOleObject_EnumAdvise_Stub(
+    struct IRpcStubBuffer* This,
+    struct IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT CALLBACK IOleObject_GetMiscStatus_Proxy(
+    IOleObject* This,
+    DWORD dwAspect,
+    DWORD* pdwStatus);
+void __RPC_STUB IOleObject_GetMiscStatus_Stub(
+    struct IRpcStubBuffer* This,
+    struct IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT CALLBACK IOleObject_SetColorScheme_Proxy(
+    IOleObject* This,
+    struct tagLOGPALETTE* pLogpal);
+void __RPC_STUB IOleObject_SetColorScheme_Stub(
+    struct IRpcStubBuffer* This,
+    struct IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IOleObject_INTERFACE_DEFINED__ */
+
+#ifndef __IOleAdviseHolder_FWD_DEFINED__
+#define __IOleAdviseHolder_FWD_DEFINED__
+typedef struct IOleAdviseHolder IOleAdviseHolder;
+#endif
+
+typedef IOleAdviseHolder *LPOLEADVISEHOLDER;
+
+/*****************************************************************************
+ * IOleAdviseHolder interface
+ */
+#ifndef __IOleAdviseHolder_INTERFACE_DEFINED__
+#define __IOleAdviseHolder_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IOleAdviseHolder, 0x00000111, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+struct IOleAdviseHolder : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE Advise(
+        IAdviseSink* pAdvise,
+        DWORD* pdwConnection) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Unadvise(
+        DWORD dwConnection) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE EnumAdvise(
+        IEnumSTATDATA** ppenumAdvise) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SendOnRename(
+        IMoniker* pmk) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SendOnSave(
+        ) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SendOnClose(
+        ) = 0;
+
+};
+#else
+typedef struct IOleAdviseHolderVtbl IOleAdviseHolderVtbl;
+struct IOleAdviseHolder {
+    const IOleAdviseHolderVtbl* lpVtbl;
+};
+struct IOleAdviseHolderVtbl {
+    ICOM_MSVTABLE_COMPAT_FIELDS
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IOleAdviseHolder* This,
+        REFIID riid,
+        void** ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IOleAdviseHolder* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IOleAdviseHolder* This);
+
+    /*** IOleAdviseHolder methods ***/
+    HRESULT (STDMETHODCALLTYPE *Advise)(
+        IOleAdviseHolder* This,
+        IAdviseSink* pAdvise,
+        DWORD* pdwConnection);
+
+    HRESULT (STDMETHODCALLTYPE *Unadvise)(
+        IOleAdviseHolder* This,
+        DWORD dwConnection);
+
+    HRESULT (STDMETHODCALLTYPE *EnumAdvise)(
+        IOleAdviseHolder* This,
+        IEnumSTATDATA** ppenumAdvise);
+
+    HRESULT (STDMETHODCALLTYPE *SendOnRename)(
+        IOleAdviseHolder* This,
+        IMoniker* pmk);
+
+    HRESULT (STDMETHODCALLTYPE *SendOnSave)(
+        IOleAdviseHolder* This);
+
+    HRESULT (STDMETHODCALLTYPE *SendOnClose)(
+        IOleAdviseHolder* This);
+
+};
+
+/*** IUnknown methods ***/
+#define IOleAdviseHolder_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define IOleAdviseHolder_AddRef(p) (p)->lpVtbl->AddRef(p)
+#define IOleAdviseHolder_Release(p) (p)->lpVtbl->Release(p)
+/*** IOleAdviseHolder methods ***/
+#define IOleAdviseHolder_Advise(p,a,b) (p)->lpVtbl->Advise(p,a,b)
+#define IOleAdviseHolder_Unadvise(p,a) (p)->lpVtbl->Unadvise(p,a)
+#define IOleAdviseHolder_EnumAdvise(p,a) (p)->lpVtbl->EnumAdvise(p,a)
+#define IOleAdviseHolder_SendOnRename(p,a) (p)->lpVtbl->SendOnRename(p,a)
+#define IOleAdviseHolder_SendOnSave(p) (p)->lpVtbl->SendOnSave(p)
+#define IOleAdviseHolder_SendOnClose(p) (p)->lpVtbl->SendOnClose(p)
+
+#endif
+
+#define IOleAdviseHolder_METHODS \
+    ICOM_MSVTABLE_COMPAT_FIELDS \
+    /*** IUnknown methods ***/ \
+    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE; \
+    STDMETHOD_(ULONG,Release)(THIS) PURE; \
+    /*** IOleAdviseHolder methods ***/ \
+    STDMETHOD_(HRESULT,Advise)(THIS_ IAdviseSink* pAdvise, DWORD* pdwConnection) PURE; \
+    STDMETHOD_(HRESULT,Unadvise)(THIS_ DWORD dwConnection) PURE; \
+    STDMETHOD_(HRESULT,EnumAdvise)(THIS_ IEnumSTATDATA** ppenumAdvise) PURE; \
+    STDMETHOD_(HRESULT,SendOnRename)(THIS_ IMoniker* pmk) PURE; \
+    STDMETHOD_(HRESULT,SendOnSave)(THIS) PURE; \
+    STDMETHOD_(HRESULT,SendOnClose)(THIS) PURE;
+
+HRESULT CALLBACK IOleAdviseHolder_Advise_Proxy(
+    IOleAdviseHolder* This,
+    IAdviseSink* pAdvise,
+    DWORD* pdwConnection);
+void __RPC_STUB IOleAdviseHolder_Advise_Stub(
+    struct IRpcStubBuffer* This,
+    struct IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT CALLBACK IOleAdviseHolder_Unadvise_Proxy(
+    IOleAdviseHolder* This,
+    DWORD dwConnection);
+void __RPC_STUB IOleAdviseHolder_Unadvise_Stub(
+    struct IRpcStubBuffer* This,
+    struct IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT CALLBACK IOleAdviseHolder_EnumAdvise_Proxy(
+    IOleAdviseHolder* This,
+    IEnumSTATDATA** ppenumAdvise);
+void __RPC_STUB IOleAdviseHolder_EnumAdvise_Stub(
+    struct IRpcStubBuffer* This,
+    struct IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT CALLBACK IOleAdviseHolder_SendOnRename_Proxy(
+    IOleAdviseHolder* This,
+    IMoniker* pmk);
+void __RPC_STUB IOleAdviseHolder_SendOnRename_Stub(
+    struct IRpcStubBuffer* This,
+    struct IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT CALLBACK IOleAdviseHolder_SendOnSave_Proxy(
+    IOleAdviseHolder* This);
+void __RPC_STUB IOleAdviseHolder_SendOnSave_Stub(
+    struct IRpcStubBuffer* This,
+    struct IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT CALLBACK IOleAdviseHolder_SendOnClose_Proxy(
+    IOleAdviseHolder* This);
+void __RPC_STUB IOleAdviseHolder_SendOnClose_Stub(
+    struct IRpcStubBuffer* This,
+    struct IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IOleAdviseHolder_INTERFACE_DEFINED__ */
+
+#ifndef __IContinue_FWD_DEFINED__
+#define __IContinue_FWD_DEFINED__
+typedef struct IContinue IContinue;
+#endif
+
+/*****************************************************************************
+ * IContinue interface
+ */
+#ifndef __IContinue_INTERFACE_DEFINED__
+#define __IContinue_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IContinue, 0x0000012a, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+struct IContinue : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE FContinue(
+        ) = 0;
+
+};
+#else
+typedef struct IContinueVtbl IContinueVtbl;
+struct IContinue {
+    const IContinueVtbl* lpVtbl;
+};
+struct IContinueVtbl {
+    ICOM_MSVTABLE_COMPAT_FIELDS
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IContinue* This,
+        REFIID riid,
+        void** ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IContinue* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IContinue* This);
+
+    /*** IContinue methods ***/
+    HRESULT (STDMETHODCALLTYPE *FContinue)(
+        IContinue* This);
+
+};
+
+/*** IUnknown methods ***/
+#define IContinue_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define IContinue_AddRef(p) (p)->lpVtbl->AddRef(p)
+#define IContinue_Release(p) (p)->lpVtbl->Release(p)
+/*** IContinue methods ***/
+#define IContinue_FContinue(p) (p)->lpVtbl->FContinue(p)
+
+#endif
+
+#define IContinue_METHODS \
+    ICOM_MSVTABLE_COMPAT_FIELDS \
+    /*** IUnknown methods ***/ \
+    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE; \
+    STDMETHOD_(ULONG,Release)(THIS) PURE; \
+    /*** IContinue methods ***/ \
+    STDMETHOD_(HRESULT,FContinue)(THIS) PURE;
+
+HRESULT CALLBACK IContinue_FContinue_Proxy(
+    IContinue* This);
+void __RPC_STUB IContinue_FContinue_Stub(
+    struct IRpcStubBuffer* This,
+    struct IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IContinue_INTERFACE_DEFINED__ */
+
+#ifndef __IViewObject_FWD_DEFINED__
+#define __IViewObject_FWD_DEFINED__
+typedef struct IViewObject IViewObject;
+#endif
+
+typedef IViewObject *LPVIEWOBJECT;
+
+/*****************************************************************************
+ * IViewObject interface
+ */
+#ifndef __IViewObject_INTERFACE_DEFINED__
+#define __IViewObject_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IViewObject, 0x0000010d, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+struct IViewObject : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE Draw(
+        DWORD dwDrawAspect,
+        LONG lindex,
+        void* pvAspect,
+        DVTARGETDEVICE* ptd,
+        HDC hdcTargetDev,
+        HDC hdcDraw,
+        LPCRECTL lprcBounds,
+        LPCRECTL lprcWBounds,
+        BOOL (STDMETHODCALLTYPE *pfnContinue)(ULONG_PTR dwContinue),
+        ULONG_PTR dwContinue) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetColorSet(
+        DWORD dwDrawAspect,
+        LONG lindex,
+        void* pvAspect,
+        DVTARGETDEVICE* ptd,
+        HDC hicTargetDev,
+        struct tagLOGPALETTE** ppColorSet) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Freeze(
+        DWORD dwDrawAspect,
+        LONG lindex,
+        void* pvAspect,
+        DWORD* pdwFreeze) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Unfreeze(
+        DWORD dwFreeze) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetAdvise(
+        DWORD aspects,
+        DWORD advf,
+        IAdviseSink* pAdvSink) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetAdvise(
+        DWORD* pAspects,
+        DWORD* pAdvf,
+        IAdviseSink** ppAdvSink) = 0;
+
+};
+#else
+typedef struct IViewObjectVtbl IViewObjectVtbl;
+struct IViewObject {
+    const IViewObjectVtbl* lpVtbl;
+};
+struct IViewObjectVtbl {
+    ICOM_MSVTABLE_COMPAT_FIELDS
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IViewObject* This,
+        REFIID riid,
+        void** ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IViewObject* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IViewObject* This);
+
+    /*** IViewObject methods ***/
+    HRESULT (STDMETHODCALLTYPE *Draw)(
+        IViewObject* This,
+        DWORD dwDrawAspect,
+        LONG lindex,
+        void* pvAspect,
+        DVTARGETDEVICE* ptd,
+        HDC hdcTargetDev,
+        HDC hdcDraw,
+        LPCRECTL lprcBounds,
+        LPCRECTL lprcWBounds,
+        BOOL (STDMETHODCALLTYPE *pfnContinue)(ULONG_PTR dwContinue),
+        ULONG_PTR dwContinue);
+
+    HRESULT (STDMETHODCALLTYPE *GetColorSet)(
+        IViewObject* This,
+        DWORD dwDrawAspect,
+        LONG lindex,
+        void* pvAspect,
+        DVTARGETDEVICE* ptd,
+        HDC hicTargetDev,
+        struct tagLOGPALETTE** ppColorSet);
+
+    HRESULT (STDMETHODCALLTYPE *Freeze)(
+        IViewObject* This,
+        DWORD dwDrawAspect,
+        LONG lindex,
+        void* pvAspect,
+        DWORD* pdwFreeze);
+
+    HRESULT (STDMETHODCALLTYPE *Unfreeze)(
+        IViewObject* This,
+        DWORD dwFreeze);
+
+    HRESULT (STDMETHODCALLTYPE *SetAdvise)(
+        IViewObject* This,
+        DWORD aspects,
+        DWORD advf,
+        IAdviseSink* pAdvSink);
+
+    HRESULT (STDMETHODCALLTYPE *GetAdvise)(
+        IViewObject* This,
+        DWORD* pAspects,
+        DWORD* pAdvf,
+        IAdviseSink** ppAdvSink);
+
+};
+
+/*** IUnknown methods ***/
+#define IViewObject_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define IViewObject_AddRef(p) (p)->lpVtbl->AddRef(p)
+#define IViewObject_Release(p) (p)->lpVtbl->Release(p)
+/*** IViewObject methods ***/
+#define IViewObject_Draw(p,a,b,c,d,e,f,g,h,i,j) (p)->lpVtbl->Draw(p,a,b,c,d,e,f,g,h,i,j)
+#define IViewObject_GetColorSet(p,a,b,c,d,e,f) (p)->lpVtbl->GetColorSet(p,a,b,c,d,e,f)
+#define IViewObject_Freeze(p,a,b,c,d) (p)->lpVtbl->Freeze(p,a,b,c,d)
+#define IViewObject_Unfreeze(p,a) (p)->lpVtbl->Unfreeze(p,a)
+#define IViewObject_SetAdvise(p,a,b,c) (p)->lpVtbl->SetAdvise(p,a,b,c)
+#define IViewObject_GetAdvise(p,a,b,c) (p)->lpVtbl->GetAdvise(p,a,b,c)
+
+#endif
+
+#define IViewObject_METHODS \
+    ICOM_MSVTABLE_COMPAT_FIELDS \
+    /*** IUnknown methods ***/ \
+    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE; \
+    STDMETHOD_(ULONG,Release)(THIS) PURE; \
+    /*** IViewObject methods ***/ \
+    STDMETHOD_(HRESULT,Draw)(THIS_ DWORD dwDrawAspect, LONG lindex, void* pvAspect, DVTARGETDEVICE* ptd, HDC hdcTargetDev, HDC hdcDraw, LPCRECTL lprcBounds, LPCRECTL lprcWBounds, BOOL (STDMETHODCALLTYPE *pfnContinue)(ULONG_PTR dwContinue), ULONG_PTR dwContinue) PURE; \
+    STDMETHOD_(HRESULT,GetColorSet)(THIS_ DWORD dwDrawAspect, LONG lindex, void* pvAspect, DVTARGETDEVICE* ptd, HDC hicTargetDev, struct tagLOGPALETTE** ppColorSet) PURE; \
+    STDMETHOD_(HRESULT,Freeze)(THIS_ DWORD dwDrawAspect, LONG lindex, void* pvAspect, DWORD* pdwFreeze) PURE; \
+    STDMETHOD_(HRESULT,Unfreeze)(THIS_ DWORD dwFreeze) PURE; \
+    STDMETHOD_(HRESULT,SetAdvise)(THIS_ DWORD aspects, DWORD advf, IAdviseSink* pAdvSink) PURE; \
+    STDMETHOD_(HRESULT,GetAdvise)(THIS_ DWORD* pAspects, DWORD* pAdvf, IAdviseSink** ppAdvSink) PURE;
+
+HRESULT CALLBACK IViewObject_RemoteDraw_Proxy(
+    IViewObject* This,
+    DWORD dwDrawAspect,
+    LONG lindex,
+    ULONG_PTR pvAspect,
+    DVTARGETDEVICE* ptd,
+    ULONG_PTR hdcTargetDev,
+    ULONG_PTR hdcDraw,
+    LPCRECTL lprcBounds,
+    LPCRECTL lprcWBounds,
+    IContinue* pContinue);
+void __RPC_STUB IViewObject_RemoteDraw_Stub(
+    struct IRpcStubBuffer* This,
+    struct IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT CALLBACK IViewObject_Draw_Proxy(
+    IViewObject* This,
+    DWORD dwDrawAspect,
+    LONG lindex,
+    void* pvAspect,
+    DVTARGETDEVICE* ptd,
+    HDC hdcTargetDev,
+    HDC hdcDraw,
+    LPCRECTL lprcBounds,
+    LPCRECTL lprcWBounds,
+    BOOL (STDMETHODCALLTYPE *pfnContinue)(ULONG_PTR dwContinue),
+    ULONG_PTR dwContinue);
+HRESULT __RPC_STUB IViewObject_Draw_Stub(
+    IViewObject* This,
+    DWORD dwDrawAspect,
+    LONG lindex,
+    ULONG_PTR pvAspect,
+    DVTARGETDEVICE* ptd,
+    ULONG_PTR hdcTargetDev,
+    ULONG_PTR hdcDraw,
+    LPCRECTL lprcBounds,
+    LPCRECTL lprcWBounds,
+    IContinue* pContinue);
+HRESULT CALLBACK IViewObject_RemoteGetColorSet_Proxy(
+    IViewObject* This,
+    DWORD dwDrawAspect,
+    LONG lindex,
+    ULONG_PTR pvAspect,
+    DVTARGETDEVICE* ptd,
+    ULONG_PTR hicTargetDev,
+    struct tagLOGPALETTE** ppColorSet);
+void __RPC_STUB IViewObject_RemoteGetColorSet_Stub(
+    struct IRpcStubBuffer* This,
+    struct IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT CALLBACK IViewObject_GetColorSet_Proxy(
+    IViewObject* This,
+    DWORD dwDrawAspect,
+    LONG lindex,
+    void* pvAspect,
+    DVTARGETDEVICE* ptd,
+    HDC hicTargetDev,
+    struct tagLOGPALETTE** ppColorSet);
+HRESULT __RPC_STUB IViewObject_GetColorSet_Stub(
+    IViewObject* This,
+    DWORD dwDrawAspect,
+    LONG lindex,
+    ULONG_PTR pvAspect,
+    DVTARGETDEVICE* ptd,
+    ULONG_PTR hicTargetDev,
+    struct tagLOGPALETTE** ppColorSet);
+HRESULT CALLBACK IViewObject_RemoteFreeze_Proxy(
+    IViewObject* This,
+    DWORD dwDrawAspect,
+    LONG lindex,
+    ULONG_PTR pvAspect,
+    DWORD* pdwFreeze);
+void __RPC_STUB IViewObject_RemoteFreeze_Stub(
+    struct IRpcStubBuffer* This,
+    struct IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT CALLBACK IViewObject_Freeze_Proxy(
+    IViewObject* This,
+    DWORD dwDrawAspect,
+    LONG lindex,
+    void* pvAspect,
+    DWORD* pdwFreeze);
+HRESULT __RPC_STUB IViewObject_Freeze_Stub(
+    IViewObject* This,
+    DWORD dwDrawAspect,
+    LONG lindex,
+    ULONG_PTR pvAspect,
+    DWORD* pdwFreeze);
+HRESULT CALLBACK IViewObject_Unfreeze_Proxy(
+    IViewObject* This,
+    DWORD dwFreeze);
+void __RPC_STUB IViewObject_Unfreeze_Stub(
+    struct IRpcStubBuffer* This,
+    struct IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT CALLBACK IViewObject_SetAdvise_Proxy(
+    IViewObject* This,
+    DWORD aspects,
+    DWORD advf,
+    IAdviseSink* pAdvSink);
+void __RPC_STUB IViewObject_SetAdvise_Stub(
+    struct IRpcStubBuffer* This,
+    struct IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT CALLBACK IViewObject_RemoteGetAdvise_Proxy(
+    IViewObject* This,
+    DWORD* pAspects,
+    DWORD* pAdvf,
+    IAdviseSink** ppAdvSink);
+void __RPC_STUB IViewObject_RemoteGetAdvise_Stub(
+    struct IRpcStubBuffer* This,
+    struct IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT CALLBACK IViewObject_GetAdvise_Proxy(
+    IViewObject* This,
+    DWORD* pAspects,
+    DWORD* pAdvf,
+    IAdviseSink** ppAdvSink);
+HRESULT __RPC_STUB IViewObject_GetAdvise_Stub(
+    IViewObject* This,
+    DWORD* pAspects,
+    DWORD* pAdvf,
+    IAdviseSink** ppAdvSink);
+
+#endif  /* __IViewObject_INTERFACE_DEFINED__ */
+
+#ifndef __IViewObject2_FWD_DEFINED__
+#define __IViewObject2_FWD_DEFINED__
+typedef struct IViewObject2 IViewObject2;
+#endif
+
+typedef IViewObject2 *LPVIEWOBJECT2;
+
+/*****************************************************************************
+ * IViewObject2 interface
+ */
+#ifndef __IViewObject2_INTERFACE_DEFINED__
+#define __IViewObject2_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IViewObject2, 0x00000127, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+struct IViewObject2 : public IViewObject
+{
+    virtual HRESULT STDMETHODCALLTYPE GetExtent(
+        DWORD dwDrawAspect,
+        LONG lindex,
+        DVTARGETDEVICE* ptd,
+        LPSIZEL lpsizel) = 0;
+
+};
+#else
+typedef struct IViewObject2Vtbl IViewObject2Vtbl;
+struct IViewObject2 {
+    const IViewObject2Vtbl* lpVtbl;
+};
+struct IViewObject2Vtbl {
+    ICOM_MSVTABLE_COMPAT_FIELDS
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IViewObject2* This,
+        REFIID riid,
+        void** ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IViewObject2* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IViewObject2* This);
+
+    /*** IViewObject methods ***/
+    HRESULT (STDMETHODCALLTYPE *Draw)(
+        IViewObject2* This,
+        DWORD dwDrawAspect,
+        LONG lindex,
+        void* pvAspect,
+        DVTARGETDEVICE* ptd,
+        HDC hdcTargetDev,
+        HDC hdcDraw,
+        LPCRECTL lprcBounds,
+        LPCRECTL lprcWBounds,
+        BOOL (STDMETHODCALLTYPE *pfnContinue)(ULONG_PTR dwContinue),
+        ULONG_PTR dwContinue);
+
+    HRESULT (STDMETHODCALLTYPE *GetColorSet)(
+        IViewObject2* This,
+        DWORD dwDrawAspect,
+        LONG lindex,
+        void* pvAspect,
+        DVTARGETDEVICE* ptd,
+        HDC hicTargetDev,
+        struct tagLOGPALETTE** ppColorSet);
+
+    HRESULT (STDMETHODCALLTYPE *Freeze)(
+        IViewObject2* This,
+        DWORD dwDrawAspect,
+        LONG lindex,
+        void* pvAspect,
+        DWORD* pdwFreeze);
+
+    HRESULT (STDMETHODCALLTYPE *Unfreeze)(
+        IViewObject2* This,
+        DWORD dwFreeze);
+
+    HRESULT (STDMETHODCALLTYPE *SetAdvise)(
+        IViewObject2* This,
+        DWORD aspects,
+        DWORD advf,
+        IAdviseSink* pAdvSink);
+
+    HRESULT (STDMETHODCALLTYPE *GetAdvise)(
+        IViewObject2* This,
+        DWORD* pAspects,
+        DWORD* pAdvf,
+        IAdviseSink** ppAdvSink);
+
+    /*** IViewObject2 methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetExtent)(
+        IViewObject2* This,
+        DWORD dwDrawAspect,
+        LONG lindex,
+        DVTARGETDEVICE* ptd,
+        LPSIZEL lpsizel);
+
+};
+
+/*** IUnknown methods ***/
+#define IViewObject2_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define IViewObject2_AddRef(p) (p)->lpVtbl->AddRef(p)
+#define IViewObject2_Release(p) (p)->lpVtbl->Release(p)
+/*** IViewObject methods ***/
+#define IViewObject2_Draw(p,a,b,c,d,e,f,g,h,i,j) (p)->lpVtbl->Draw(p,a,b,c,d,e,f,g,h,i,j)
+#define IViewObject2_GetColorSet(p,a,b,c,d,e,f) (p)->lpVtbl->GetColorSet(p,a,b,c,d,e,f)
+#define IViewObject2_Freeze(p,a,b,c,d) (p)->lpVtbl->Freeze(p,a,b,c,d)
+#define IViewObject2_Unfreeze(p,a) (p)->lpVtbl->Unfreeze(p,a)
+#define IViewObject2_SetAdvise(p,a,b,c) (p)->lpVtbl->SetAdvise(p,a,b,c)
+#define IViewObject2_GetAdvise(p,a,b,c) (p)->lpVtbl->GetAdvise(p,a,b,c)
+/*** IViewObject2 methods ***/
+#define IViewObject2_GetExtent(p,a,b,c,d) (p)->lpVtbl->GetExtent(p,a,b,c,d)
+
+#endif
+
+#define IViewObject2_METHODS \
+    ICOM_MSVTABLE_COMPAT_FIELDS \
+    /*** IUnknown methods ***/ \
+    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE; \
+    STDMETHOD_(ULONG,Release)(THIS) PURE; \
+    /*** IViewObject methods ***/ \
+    STDMETHOD_(HRESULT,Draw)(THIS_ DWORD dwDrawAspect, LONG lindex, void* pvAspect, DVTARGETDEVICE* ptd, HDC hdcTargetDev, HDC hdcDraw, LPCRECTL lprcBounds, LPCRECTL lprcWBounds, BOOL (STDMETHODCALLTYPE *pfnContinue)(ULONG_PTR dwContinue), ULONG_PTR dwContinue) PURE; \
+    STDMETHOD_(HRESULT,GetColorSet)(THIS_ DWORD dwDrawAspect, LONG lindex, void* pvAspect, DVTARGETDEVICE* ptd, HDC hicTargetDev, struct tagLOGPALETTE** ppColorSet) PURE; \
+    STDMETHOD_(HRESULT,Freeze)(THIS_ DWORD dwDrawAspect, LONG lindex, void* pvAspect, DWORD* pdwFreeze) PURE; \
+    STDMETHOD_(HRESULT,Unfreeze)(THIS_ DWORD dwFreeze) PURE; \
+    STDMETHOD_(HRESULT,SetAdvise)(THIS_ DWORD aspects, DWORD advf, IAdviseSink* pAdvSink) PURE; \
+    STDMETHOD_(HRESULT,GetAdvise)(THIS_ DWORD* pAspects, DWORD* pAdvf, IAdviseSink** ppAdvSink) PURE; \
+    /*** IViewObject2 methods ***/ \
+    STDMETHOD_(HRESULT,GetExtent)(THIS_ DWORD dwDrawAspect, LONG lindex, DVTARGETDEVICE* ptd, LPSIZEL lpsizel) PURE;
+
+HRESULT CALLBACK IViewObject2_GetExtent_Proxy(
+    IViewObject2* This,
+    DWORD dwDrawAspect,
+    LONG lindex,
+    DVTARGETDEVICE* ptd,
+    LPSIZEL lpsizel);
+void __RPC_STUB IViewObject2_GetExtent_Stub(
+    struct IRpcStubBuffer* This,
+    struct IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IViewObject2_INTERFACE_DEFINED__ */
+
+#ifndef __IDropSource_FWD_DEFINED__
+#define __IDropSource_FWD_DEFINED__
+typedef struct IDropSource IDropSource;
+#endif
+
+typedef IDropSource *LPDROPSOURCE;
+
+/*****************************************************************************
+ * IDropSource interface
+ */
+#ifndef __IDropSource_INTERFACE_DEFINED__
+#define __IDropSource_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IDropSource, 0x00000121, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+struct IDropSource : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE QueryContinueDrag(
+        BOOL fEscapePressed,
+        DWORD grfKeyState) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GiveFeedback(
+        DWORD dwEffect) = 0;
+
+};
+#else
+typedef struct IDropSourceVtbl IDropSourceVtbl;
+struct IDropSource {
+    const IDropSourceVtbl* lpVtbl;
+};
+struct IDropSourceVtbl {
+    ICOM_MSVTABLE_COMPAT_FIELDS
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IDropSource* This,
+        REFIID riid,
+        void** ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IDropSource* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IDropSource* This);
+
+    /*** IDropSource methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryContinueDrag)(
+        IDropSource* This,
+        BOOL fEscapePressed,
+        DWORD grfKeyState);
+
+    HRESULT (STDMETHODCALLTYPE *GiveFeedback)(
+        IDropSource* This,
+        DWORD dwEffect);
+
+};
+
+/*** IUnknown methods ***/
+#define IDropSource_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDropSource_AddRef(p) (p)->lpVtbl->AddRef(p)
+#define IDropSource_Release(p) (p)->lpVtbl->Release(p)
+/*** IDropSource methods ***/
+#define IDropSource_QueryContinueDrag(p,a,b) (p)->lpVtbl->QueryContinueDrag(p,a,b)
+#define IDropSource_GiveFeedback(p,a) (p)->lpVtbl->GiveFeedback(p,a)
+
+#endif
+
+#define IDropSource_METHODS \
+    ICOM_MSVTABLE_COMPAT_FIELDS \
+    /*** IUnknown methods ***/ \
+    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE; \
+    STDMETHOD_(ULONG,Release)(THIS) PURE; \
+    /*** IDropSource methods ***/ \
+    STDMETHOD_(HRESULT,QueryContinueDrag)(THIS_ BOOL fEscapePressed, DWORD grfKeyState) PURE; \
+    STDMETHOD_(HRESULT,GiveFeedback)(THIS_ DWORD dwEffect) PURE;
+
+HRESULT CALLBACK IDropSource_QueryContinueDrag_Proxy(
+    IDropSource* This,
+    BOOL fEscapePressed,
+    DWORD grfKeyState);
+void __RPC_STUB IDropSource_QueryContinueDrag_Stub(
+    struct IRpcStubBuffer* This,
+    struct IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT CALLBACK IDropSource_GiveFeedback_Proxy(
+    IDropSource* This,
+    DWORD dwEffect);
+void __RPC_STUB IDropSource_GiveFeedback_Stub(
+    struct IRpcStubBuffer* This,
+    struct IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IDropSource_INTERFACE_DEFINED__ */
+
+#ifndef __IDropTarget_FWD_DEFINED__
+#define __IDropTarget_FWD_DEFINED__
+typedef struct IDropTarget IDropTarget;
+#endif
+
+typedef IDropTarget *LPDROPTARGET;
+
+#define MK_ALT (0x20)
+
+#define DROPEFFECT_NONE (0)
+
+#define DROPEFFECT_COPY (1)
+
+#define DROPEFFECT_MOVE (2)
+
+#define DROPEFFECT_LINK (4)
+
+#define DROPEFFECT_SCROLL (0x80000000)
+
+#define DD_DEFSCROLLINSET (11)
+
+#define DD_DEFSCROLLDELAY (50)
+
+#define DD_DEFSCROLLINTERVAL (50)
+
+#define DD_DEFDRAGDELAY (200)
+
+#define DD_DEFDRAGMINDIST (2)
+
+/*****************************************************************************
+ * IDropTarget interface
+ */
+#ifndef __IDropTarget_INTERFACE_DEFINED__
+#define __IDropTarget_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IDropTarget, 0x00000122, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+struct IDropTarget : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE DragEnter(
+        IDataObject* pDataObj,
+        DWORD grfKeyState,
+        POINTL pt,
+        DWORD* pdwEffect) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE DragOver(
+        DWORD grfKeyState,
+        POINTL pt,
+        DWORD* pdwEffect) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE DragLeave(
+        ) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Drop(
+        IDataObject* pDataObj,
+        DWORD grfKeyState,
+        POINTL pt,
+        DWORD* pdwEffect) = 0;
+
+};
+#else
+typedef struct IDropTargetVtbl IDropTargetVtbl;
+struct IDropTarget {
+    const IDropTargetVtbl* lpVtbl;
+};
+struct IDropTargetVtbl {
+    ICOM_MSVTABLE_COMPAT_FIELDS
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IDropTarget* This,
+        REFIID riid,
+        void** ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IDropTarget* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IDropTarget* This);
+
+    /*** IDropTarget methods ***/
+    HRESULT (STDMETHODCALLTYPE *DragEnter)(
+        IDropTarget* This,
+        IDataObject* pDataObj,
+        DWORD grfKeyState,
+        POINTL pt,
+        DWORD* pdwEffect);
+
+    HRESULT (STDMETHODCALLTYPE *DragOver)(
+        IDropTarget* This,
+        DWORD grfKeyState,
+        POINTL pt,
+        DWORD* pdwEffect);
+
+    HRESULT (STDMETHODCALLTYPE *DragLeave)(
+        IDropTarget* This);
+
+    HRESULT (STDMETHODCALLTYPE *Drop)(
+        IDropTarget* This,
+        IDataObject* pDataObj,
+        DWORD grfKeyState,
+        POINTL pt,
+        DWORD* pdwEffect);
+
+};
+
+/*** IUnknown methods ***/
+#define IDropTarget_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDropTarget_AddRef(p) (p)->lpVtbl->AddRef(p)
+#define IDropTarget_Release(p) (p)->lpVtbl->Release(p)
+/*** IDropTarget methods ***/
+#define IDropTarget_DragEnter(p,a,b,c,d) (p)->lpVtbl->DragEnter(p,a,b,c,d)
+#define IDropTarget_DragOver(p,a,b,c) (p)->lpVtbl->DragOver(p,a,b,c)
+#define IDropTarget_DragLeave(p) (p)->lpVtbl->DragLeave(p)
+#define IDropTarget_Drop(p,a,b,c,d) (p)->lpVtbl->Drop(p,a,b,c,d)
+
+#endif
+
+#define IDropTarget_METHODS \
+    ICOM_MSVTABLE_COMPAT_FIELDS \
+    /*** IUnknown methods ***/ \
+    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE; \
+    STDMETHOD_(ULONG,Release)(THIS) PURE; \
+    /*** IDropTarget methods ***/ \
+    STDMETHOD_(HRESULT,DragEnter)(THIS_ IDataObject* pDataObj, DWORD grfKeyState, POINTL pt, DWORD* pdwEffect) PURE; \
+    STDMETHOD_(HRESULT,DragOver)(THIS_ DWORD grfKeyState, POINTL pt, DWORD* pdwEffect) PURE; \
+    STDMETHOD_(HRESULT,DragLeave)(THIS) PURE; \
+    STDMETHOD_(HRESULT,Drop)(THIS_ IDataObject* pDataObj, DWORD grfKeyState, POINTL pt, DWORD* pdwEffect) PURE;
+
+HRESULT CALLBACK IDropTarget_DragEnter_Proxy(
+    IDropTarget* This,
+    IDataObject* pDataObj,
+    DWORD grfKeyState,
+    POINTL pt,
+    DWORD* pdwEffect);
+void __RPC_STUB IDropTarget_DragEnter_Stub(
+    struct IRpcStubBuffer* This,
+    struct IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT CALLBACK IDropTarget_DragOver_Proxy(
+    IDropTarget* This,
+    DWORD grfKeyState,
+    POINTL pt,
+    DWORD* pdwEffect);
+void __RPC_STUB IDropTarget_DragOver_Stub(
+    struct IRpcStubBuffer* This,
+    struct IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT CALLBACK IDropTarget_DragLeave_Proxy(
+    IDropTarget* This);
+void __RPC_STUB IDropTarget_DragLeave_Stub(
+    struct IRpcStubBuffer* This,
+    struct IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT CALLBACK IDropTarget_Drop_Proxy(
+    IDropTarget* This,
+    IDataObject* pDataObj,
+    DWORD grfKeyState,
+    POINTL pt,
+    DWORD* pdwEffect);
+void __RPC_STUB IDropTarget_Drop_Stub(
+    struct IRpcStubBuffer* This,
+    struct IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IDropTarget_INTERFACE_DEFINED__ */
+
+#ifdef __cplusplus
+}
+#endif
+#endif /* __WIDL_OLEIDL_H */
diff --git a/include/oleidl.idl b/include/oleidl.idl
new file mode 100644
index 0000000..9601c69
--- /dev/null
+++ b/include/oleidl.idl
@@ -0,0 +1,953 @@
+/*
+ * Copyright (C) 1999 Paul Quinn
+ * Copyright (C) 1999 Francis Beaudet
+ * Copyright (C) 2003 Alexandre Julliard
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ */
+
+import "objidl.idl";
+
+
+/*****************************************************************************
+ * IOleTypes interface
+ */
+[
+    uuid(b0916c84-7416-101a-bcea-08002b2b79ef)
+]
+interface IOLETypes
+{
+    typedef enum tagOLERENDER
+    {
+	OLERENDER_NONE = 0,
+	OLERENDER_DRAW = 1,
+	OLERENDER_FORMAT = 2,
+	OLERENDER_ASIS = 3
+    } OLERENDER, *LPOLERENDER;
+
+    typedef struct tagOBJECTDESCRIPTOR
+    {
+	ULONG cbSize;
+	CLSID clsid;
+	DWORD dwDrawAspect;
+	SIZEL sizel;
+	POINTL pointl;
+	DWORD dwStatus;
+	DWORD dwFullUserTypeName;
+	DWORD dwSrcOfCopy;
+    } OBJECTDESCRIPTOR,  *POBJECTDESCRIPTOR,   *LPOBJECTDESCRIPTOR,
+      LINKSRCDESCRIPTOR, *PLINKSRCDESCRIPTOR,  *LPLINKSRCDESCRIPTOR;
+}
+
+
+/*****************************************************************************
+ * IOleWindow interface
+ */
+[
+    object,
+    uuid(00000114-0000-0000-c000-000000000046),
+    pointer_default(unique)
+]
+interface IOleWindow : IUnknown
+{
+    typedef [unique] IOleWindow *LPOLEWINDOW;
+
+    HRESULT GetWindow(
+        [out] HWND *phwnd);
+
+    HRESULT ContextSensitiveHelp(
+        [in] BOOL fEnterMode);
+}
+
+
+/*****************************************************************************
+ * IOleInPlaceObject interface
+ */
+[
+    object,
+    uuid(00000113-0000-0000-c000-000000000046),
+    pointer_default(unique)
+]
+interface IOleInPlaceObject : IOleWindow
+{
+    typedef [unique] IOleInPlaceObject *LPOLEINPLACEOBJECT;
+
+    HRESULT InPlaceDeactivate();
+
+    HRESULT UIDeactivate();
+
+    HRESULT SetObjectRects(
+        [in] LPCRECT lprcPosRect,
+        [in] LPCRECT lprcClipRect);
+
+    HRESULT ReactivateAndUndo();
+}
+
+
+/*****************************************************************************
+ * IOleInPlaceActiveObject interface
+ */
+interface IOleInPlaceUIWindow;  /* forward declaration */
+[
+    object,
+    uuid(00000117-0000-0000-c000-000000000046)
+]
+interface IOleInPlaceActiveObject : IOleWindow
+{
+    typedef [unique] IOleInPlaceActiveObject *LPOLEINPLACEACTIVEOBJECT;
+
+cpp_quote("struct tagMSG;")  /* FIXME */
+
+    [local]
+    HRESULT TranslateAccelerator(
+        [in] struct tagMSG *lpmsg);
+
+    [call_as(TranslateAccelerator)]
+    HRESULT RemoteTranslateAccelerator();
+
+    HRESULT OnFrameWindowActivate(
+        [in] BOOL fActivate);
+
+    HRESULT OnDocWindowActivate(
+        [in] BOOL fActivate);
+
+    [local]
+    HRESULT ResizeBorder(
+        [in] LPCRECT prcBorder,
+        [in, unique] IOleInPlaceUIWindow *pUIWindow,
+        [in] BOOL fFrameWindow);
+
+    [call_as(ResizeBorder)]
+    HRESULT RemoteResizeBorder(
+        [in] LPCRECT prcBorder,
+        [in] REFIID riid,
+        [in, unique, iid_is(riid)] IOleInPlaceUIWindow *pUIWindow,
+        [in] BOOL fFrameWindow);
+
+    HRESULT EnableModeless(
+        [in] BOOL fEnable);
+}
+
+
+/*****************************************************************************
+ * IOleInPlaceUIWindow interface
+ */
+[
+    object,
+    uuid(00000115-0000-0000-c000-000000000046),
+    pointer_default(unique)
+]
+
+interface IOleInPlaceUIWindow : IOleWindow
+{
+    typedef [unique] IOleInPlaceUIWindow *LPOLEINPLACEUIWINDOW;
+
+    typedef RECT BORDERWIDTHS;
+    typedef LPRECT LPBORDERWIDTHS;
+    typedef LPCRECT LPCBORDERWIDTHS;
+
+    HRESULT GetBorder(
+        [out] LPRECT lprectBorder);
+
+    HRESULT RequestBorderSpace(
+        [in, unique] LPCBORDERWIDTHS pborderwidths);
+
+    HRESULT SetBorderSpace(
+        [in, unique] LPCBORDERWIDTHS pborderwidths);
+
+    HRESULT SetActiveObject(
+        [in, unique] IOleInPlaceActiveObject *pActiveObject,
+        [in, string, unique] LPCOLESTR pszObjName);
+}
+
+
+/*****************************************************************************
+ * IOleInPlaceFrame interface
+ */
+[
+    object,
+    uuid(00000116-0000-0000-c000-000000000046),
+    pointer_default(unique)
+]
+interface IOleInPlaceFrame : IOleInPlaceUIWindow
+{
+    typedef [unique] IOleInPlaceFrame *LPOLEINPLACEFRAME;
+
+    typedef struct tagOleInPlaceFrameInfo
+    {
+        UINT cb;
+        BOOL fMDIApp;
+        HWND hwndFrame;
+        HACCEL haccel;
+        UINT cAccelEntries;
+    } OLEINPLACEFRAMEINFO, *LPOLEINPLACEFRAMEINFO;
+
+    typedef struct  tagOleMenuGroupWidths
+    {
+        LONG width[ 6 ];
+    } OLEMENUGROUPWIDTHS, *LPOLEMENUGROUPWIDTHS;
+
+    typedef HGLOBAL HOLEMENU;
+
+    HRESULT InsertMenus(
+        [in] HMENU hmenuShared,
+        [in,out] LPOLEMENUGROUPWIDTHS lpMenuWidths);
+
+    HRESULT SetMenu(
+        [in] HMENU hmenuShared,
+        [in] HOLEMENU holemenu,
+        [in] HWND hwndActiveObject);
+
+    HRESULT RemoveMenus(
+        [in] HMENU hmenuShared);
+
+    HRESULT SetStatusText(
+        [in, unique] LPCOLESTR pszStatusText);
+
+    HRESULT EnableModeless(
+        [in] BOOL fEnable);
+
+    HRESULT TranslateAccelerator(
+        [in] struct tagMSG *lpmsg,
+        [in] WORD wID);
+}
+
+
+/*****************************************************************************
+ * IOleInPlaceSite interface
+ */
+[
+    object,
+    uuid(00000119-0000-0000-c000-000000000046),
+    pointer_default(unique)
+]
+interface IOleInPlaceSite : IOleWindow
+{
+    typedef [unique] IOleInPlaceSite *LPOLEINPLACESITE;
+
+    HRESULT CanInPlaceActivate();
+    HRESULT OnInPlaceActivate();
+    HRESULT OnUIActivate();
+
+    HRESULT GetWindowContext(
+        [out] IOleInPlaceFrame **ppFrame,
+        [out] IOleInPlaceUIWindow **ppDoc,
+        [out] LPRECT lprcPosRect,
+        [out] LPRECT lprcClipRect,
+        [in, out] LPOLEINPLACEFRAMEINFO lpFrameInfo);
+
+    HRESULT Scroll(
+        [in] SIZE scrollExtant);
+
+    HRESULT OnUIDeactivate(
+        [in] BOOL fUndoable);
+
+    HRESULT OnInPlaceDeactivate();
+    HRESULT DiscardUndoState();
+    HRESULT DeactivateAndUndo();
+
+    HRESULT OnPosRectChange(
+        [in] LPCRECT lprcPosRect);
+}
+
+
+/*****************************************************************************
+ * IParseDisplayName interface
+ */
+[
+    object,
+    uuid(0000011a-0000-0000-c000-000000000046),
+    pointer_default(unique)
+]
+interface IParseDisplayName : IUnknown
+{
+    typedef [unique] IParseDisplayName *LPPARSEDISPLAYNAME;
+
+    HRESULT ParseDisplayName(
+        [in, unique] IBindCtx *pbc,
+        [in] LPOLESTR pszDisplayName,
+        [out] ULONG *pchEaten,
+        [out] IMoniker **ppmkOut);
+}
+
+
+/*****************************************************************************
+ * IOleContainer interface
+ */
+[
+    object,
+    uuid(0000011b-0000-0000-c000-000000000046),
+    pointer_default(unique)
+]
+interface IOleContainer : IParseDisplayName
+{
+    typedef [unique] IOleContainer *LPOLECONTAINER;
+
+    HRESULT EnumObjects(
+        [in] DWORD grfFlags,
+        [out] IEnumUnknown **ppenum);
+
+    HRESULT LockContainer(
+        [in] BOOL fLock);
+}
+
+
+/*****************************************************************************
+ * IOleItemContainer interface
+ */
+[
+    object,
+    uuid(0000011c-0000-0000-c000-000000000046),
+    pointer_default(unique)
+]
+interface IOleItemContainer : IOleContainer
+{
+    typedef [unique] IOleItemContainer *LPOLEITEMCONTAINER;
+
+    typedef enum tagBINDSPEED
+    {
+	BINDSPEED_INDEFINITE = 1,
+	BINDSPEED_MODERATE = 2,
+	BINDSPEED_IMMEDIATE = 3
+    } BINDSPEED;
+
+    typedef enum tagOLECONTF
+    {
+	OLECONTF_EMBEDDINGS = 1,
+	OLECONTF_LINKS = 2,
+	OLECONTF_OTHERS = 4,
+	OLECONTF_OLNYUSER = 8,
+	OLECONTF_ONLYIFRUNNING = 16
+    } OLECONTF;
+
+cpp_quote("#ifdef __WINESRC__")
+cpp_quote("#undef GetObject")
+cpp_quote("#endif")
+    HRESULT GetObject(
+        [in] LPOLESTR pszItem,
+        [in] DWORD dwSpeedNeeded,
+        [in, unique] IBindCtx *pbc,
+        [in] REFIID riid,
+        [out, iid_is(riid)] void **ppvObject);
+
+    HRESULT GetObjectStorage(
+        [in] LPOLESTR pszItem,
+        [in, unique] IBindCtx *pbc,
+        [in] REFIID riid,
+        [out, iid_is(riid)] void **ppvStorage);
+
+    HRESULT IsRunning(
+        [in] LPOLESTR pszItem);
+}
+
+
+/*****************************************************************************
+ * IOleLink interface
+ */
+[
+    object,
+    uuid(0000011d-0000-0000-c000-000000000046)
+]
+interface IOleLink : IUnknown
+{
+    typedef [unique] IOleLink *LPOLELINK;
+
+    typedef enum tagOLEUPDATE
+    {
+	OLEUPDATE_ALWAYS = 1,
+	OLEUPDATE_ONCALL = 3
+    } OLEUPDATE, *POLEUPDATE, *LPOLEUPDATE;
+
+    typedef enum tagOLELINKBIND
+    {
+	OLELINKBIND_EVENIFCLASSDIFF = 1
+    } OLELINKBIND;
+
+    HRESULT SetUpdateOptions(
+        [in] DWORD dwUpdateOpt);
+
+    HRESULT GetUpdateOptions(
+        [out] DWORD *pdwUpdateOpt);
+
+    HRESULT SetSourceMoniker(
+        [in, unique] IMoniker *pmk,
+        [in] REFCLSID rclsid);
+
+    HRESULT GetSourceMoniker(
+        [out] IMoniker **ppmk);
+
+    HRESULT SetSourceDisplayName(
+        [in]LPCOLESTR pszStatusText);
+
+    HRESULT GetSourceDisplayName(
+        [out] LPOLESTR *ppszDisplayName);
+
+    HRESULT BindToSource(
+        [in] DWORD bindflags,
+        [in, unique] IBindCtx *pbc);
+
+    HRESULT BindIfRunning();
+
+    HRESULT GetBoundSource(
+        [out] IUnknown **ppunk);
+
+    HRESULT UnbindSource();
+
+    HRESULT Update(
+        [in, unique] IBindCtx *pbc);
+}
+
+
+/*****************************************************************************
+ * IOleClientSite interface
+ */
+[
+    object,
+    uuid(00000118-0000-0000-c000-000000000046),
+    pointer_default(unique)
+]
+interface IOleClientSite : IUnknown
+{
+    typedef [unique] IOleClientSite * LPOLECLIENTSITE;
+
+    HRESULT SaveObject();
+
+    HRESULT GetMoniker(
+        [in] DWORD dwAssign,
+        [in] DWORD dwWhichMoniker,
+        [out] IMoniker **ppmk);
+
+    HRESULT GetContainer(
+        [out] IOleContainer **ppContainer);
+
+    HRESULT ShowObject();
+
+    HRESULT OnShowWindow(
+        [in] BOOL fShow);
+
+    HRESULT RequestNewObjectLayout();
+}
+
+
+/*****************************************************************************
+ * IOleCache interface
+ */
+[
+    object,
+    uuid(0000011e-0000-0000-c000-000000000046),
+    pointer_default(unique)
+]
+interface IOleCache : IUnknown
+{
+    typedef [unique] IOleCache *LPOLECACHE;
+
+    HRESULT Cache(
+        [in, unique] FORMATETC *pformatetc,
+        [in] DWORD advf,
+        [out] DWORD *pdwConnection);
+
+    HRESULT Uncache(
+        [in] DWORD dwConnection);
+
+    HRESULT EnumCache(
+        [out] IEnumSTATDATA **ppenumSTATDATA);
+
+    HRESULT InitCache(
+        [in, unique] IDataObject *pDataObject);
+
+    HRESULT SetData(
+        [in, unique] FORMATETC *pformatetc,
+        [in, unique] STGMEDIUM *pmedium,
+        [in] BOOL fRelease);
+}
+
+
+/*****************************************************************************
+ * IOleCache2 interface
+ */
+[
+    object,
+    uuid(00000128-0000-0000-c000-000000000046),
+    pointer_default(unique)
+]
+interface IOleCache2 : IOleCache
+{
+    typedef [unique] IOleCache2 *LPOLECACHE2;
+
+    const DWORD UPDFCACHE_NODATACACHE = 0x00000001;
+    const DWORD UPDFCACHE_ONSAVECACHE = 0x00000002;
+    const DWORD UPDFCACHE_ONSTOPCACHE = 0x00000004;
+    const DWORD UPDFCACHE_NORMALCACHE = 0x00000008;
+    const DWORD UPDFCACHE_IFBLANK     = 0x00000010;
+    const DWORD UPDFCACHE_ONLYIFBLANK = 0x80000000;
+
+    const DWORD UPDFCACHE_IFBLANKORONSAVECACHE = (UPDFCACHE_IFBLANK | UPDFCACHE_ONSAVECACHE);
+    const DWORD UPDFCACHE_ALL = ((DWORD)(~(UPDFCACHE_ONLYIFBLANK)));
+    const DWORD UPDFCACHE_ALLBUTNODATACACHE = (UPDFCACHE_ALL & ((DWORD)(~UPDFCACHE_NODATACACHE)));
+
+    typedef enum tagDISCARDCACHE
+    {
+        DISCARDCACHE_SAVEIFDIRTY = 0,
+        DISCARDCACHE_NOSAVE =  1
+    } DISCARDCACHE;
+
+    [local]
+    HRESULT UpdateCache(
+        [in] LPDATAOBJECT pDataObject,
+        [in] DWORD grfUpdf,
+        [in] LPVOID pReserved);
+
+    [call_as(UpdateCache)]
+    HRESULT RemoteUpdateCache(
+        [in] LPDATAOBJECT pDataObject,
+        [in] DWORD grfUpdf,
+        [in] LONG_PTR pReserved);
+
+    HRESULT DiscardCache(
+        [in] DWORD dwDiscardOptions);
+}
+
+
+/*****************************************************************************
+ * IOleCacheControl interface
+ */
+[
+    object,
+    uuid(00000129-0000-0000-c000-000000000046)
+]
+interface IOleCacheControl : IUnknown
+{
+    typedef [unique] IOleCacheControl *LPOLECACHECONTROL;
+
+    HRESULT OnRun(
+        LPDATAOBJECT pDataObject);
+
+    HRESULT OnStop();
+}
+
+
+/*****************************************************************************
+ *  IEnumOLEVERB interface
+ */
+[
+    object,
+    uuid(00000104-0000-0000-c000-000000000046),
+    pointer_default(unique)
+]
+interface IEnumOLEVERB : IUnknown
+{
+    typedef [unique] IEnumOLEVERB *LPENUMOLEVERB;
+
+    typedef struct tagOLEVERB
+    {
+	LONG lVerb;
+	LPOLESTR lpszVerbName;
+	DWORD fuFlags;
+	DWORD grfAttribs;
+    } OLEVERB, *LPOLEVERB;
+
+    typedef enum tagOLEVERBATTRIB
+    {
+	OLEVERBATTRIB_NEVERDIRTIES = 1,
+	OLEVERBATTRIB_ONCONTAINERMENU = 2
+    } OLEVERBATTRIB;
+
+    [local]
+    HRESULT Next(
+        [in] ULONG celt,
+        [out, size_is(celt), length_is(*pceltFetched)] LPOLEVERB rgelt,
+        [out] ULONG *pceltFetched);
+
+    [call_as(Next)]
+    HRESULT RemoteNext(
+        [in] ULONG celt,
+        [out, size_is(celt), length_is(*pceltFetched)] LPOLEVERB rgelt,
+        [out] ULONG *pceltFetched);
+
+    HRESULT Skip(
+        [in] ULONG celt);
+
+    HRESULT Reset();
+
+    HRESULT Clone(
+        [out] IEnumOLEVERB **ppenum);
+}
+
+
+/*****************************************************************************
+ * IOleObject interface
+ */
+[
+    object,
+    uuid(00000112-0000-0000-c000-000000000046),
+    pointer_default(unique)
+]
+interface IOleObject : IUnknown
+{
+    typedef [unique] IOleObject *LPOLEOBJECT;
+
+    typedef enum tagOLEGETMONIKER
+    {
+	OLEGETMONIKER_ONLYIFTHERE = 1,
+	OLEGETMONIKER_FORCEASSIGN = 2,
+	OLEGETMONIKER_UNASSIGN = 3,
+	OLEGETMONIKER_TEMPFORUSER = 4
+    } OLEGETMONIKER;
+
+    typedef enum tagOLEWHICHMK
+    {
+	OLEWHICHMK_CONTAINER = 1,
+	OLEWHICHMK_OBJREL = 2,
+	OLEWHICHMK_OBJFULL = 3
+    } OLEWHICHMK;
+
+    typedef enum tagUSERCLASSTYPE
+    {
+	USERCLASSTYPE_FULL = 1,
+	USERCLASSTYPE_SHORT = 2,
+	USERCLASSTYPE_APPNAME = 3
+    } USERCLASSTYPE;
+
+    typedef enum tagOLEMISC
+    {
+	OLEMISC_RECOMPOSEONRESIZE = 0x1,
+	OLEMISC_ONLYICONIC = 0x2,
+	OLEMISC_INSERTNOTREPLACE = 0x4,
+	OLEMISC_STATIC = 0x8,
+	OLEMISC_CANTLINKINSIDE = 0x10,
+	OLEMISC_CANLINKBYOLE1 = 0x20,
+	OLEMISC_ISLINKOBJECT = 0x40,
+	OLEMISC_INSIDEOUT = 0x80,
+	OLEMISC_ACTIVATEWHENVISIBLE = 0x100,
+	OLEMISC_RENDERINGISDEVICEINDEPENDENT = 0x200,
+	OLEMISC_INVISIBLEATRUNTIME = 0x400,
+	OLEMISC_ALWAYSRUN = 0x800,
+	OLEMISC_ACTSLIKEBUTTON = 0x1000,
+	OLEMISC_ACTSLIKELABEL = 0x2000,
+	OLEMISC_NOUIACTIVATE = 0x4000,
+	OLEMISC_ALIGNABLE = 0x8000,
+	OLEMISC_SIMPLEFRAME = 0x10000,
+	OLEMISC_SETCLIENTSITEFIRST = 0x20000,
+	OLEMISC_IMEMODE = 0x40000,
+	OLEMISC_IGNOREACTIVATEWHENVISIBLE = 0x80000,
+	OLEMISC_WANTSTOMENUMERGE = 0x100000,
+	OLEMISC_SUPPORTSMULTILEVELUNDO = 0x200000
+    } OLEMISC;
+
+    typedef enum tagOLECLOSE
+    {
+	OLECLOSE_SAVEIFDIRTY = 0,
+	OLECLOSE_NOSAVE = 1,
+	OLECLOSE_PROMPTSAVE = 2
+    } OLECLOSE;
+
+    HRESULT SetClientSite(
+        [in, unique] IOleClientSite *pClientSite);
+
+    HRESULT GetClientSite(
+        [out] IOleClientSite **ppClientSite);
+
+    HRESULT SetHostNames(
+        [in] LPCOLESTR szContainerApp,
+        [in, unique] LPCOLESTR szContainerObj);
+
+    HRESULT Close(
+        [in] DWORD dwSaveOption);
+
+    HRESULT SetMoniker(
+        [in] DWORD dwWhichMoniker,
+        [in, unique] IMoniker *pmk);
+
+    HRESULT GetMoniker(
+        [in] DWORD dwAssign,
+        [in] DWORD dwWhichMoniker,
+        [out] IMoniker **ppmk);
+
+    HRESULT InitFromData(
+        [in, unique] IDataObject *pDataObject,
+        [in] BOOL fCreation,
+        [in] DWORD dwReserved);
+
+    HRESULT GetClipboardData(
+        [in] DWORD dwReserved,
+        [out] IDataObject **ppDataObject);
+
+    HRESULT DoVerb(
+        [in] LONG iVerb,
+        [in, unique] struct tagMSG *lpmsg,
+        [in, unique] IOleClientSite *pActiveSite,
+        [in] LONG lindex,
+        [in] HWND hwndParent,
+        [in, unique] LPCRECT lprcPosRect);
+
+    HRESULT EnumVerbs(
+        [out] IEnumOLEVERB **ppEnumOleVerb);
+
+    HRESULT Update();
+
+    HRESULT IsUpToDate();
+
+    HRESULT GetUserClassID(
+        [out] CLSID *pClsid);
+
+    HRESULT GetUserType(
+        [in] DWORD dwFormOfType,
+        [out] LPOLESTR *pszUserType);
+
+    HRESULT SetExtent(
+        [in] DWORD dwDrawAspect,
+        [in] SIZEL *psizel);
+
+    HRESULT GetExtent(
+        [in] DWORD dwDrawAspect,
+        [out] SIZEL *psizel);
+
+    HRESULT Advise(
+        [in, unique] IAdviseSink *pAdvSink,
+        [out] DWORD *pdwConnection);
+
+    HRESULT Unadvise(
+        [in] DWORD dwConnection);
+
+    HRESULT EnumAdvise(
+        [out] IEnumSTATDATA **ppenumAdvise);
+
+    HRESULT GetMiscStatus(
+        [in] DWORD dwAspect,
+        [out] DWORD *pdwStatus);
+
+cpp_quote("struct tagLOGPALETTE;")  /* FIXME */
+
+    HRESULT SetColorScheme(
+        [in] struct tagLOGPALETTE *pLogpal);
+}
+
+
+/*****************************************************************************
+ * IOleAdviseHolder interface
+ */
+[
+    local,
+    object,
+    uuid(00000111-0000-0000-c000-000000000046)
+]
+interface IOleAdviseHolder : IUnknown
+{
+    typedef [unique] IOleAdviseHolder * LPOLEADVISEHOLDER;
+
+    HRESULT Advise(
+        [in, unique] IAdviseSink *pAdvise,
+        [out] DWORD *pdwConnection);
+
+    HRESULT Unadvise(
+        [in] DWORD dwConnection);
+
+    HRESULT EnumAdvise(
+        [out] IEnumSTATDATA **ppenumAdvise);
+
+    HRESULT SendOnRename(
+        [in, unique] IMoniker *pmk);
+
+    HRESULT SendOnSave();
+    HRESULT SendOnClose();
+}
+
+
+/*****************************************************************************
+ * IContinue interface
+ */
+[
+    object,
+    uuid(0000012a-0000-0000-c000-000000000046)
+]
+interface IContinue : IUnknown
+{
+    HRESULT FContinue();
+}
+
+
+/*****************************************************************************
+ * IViewObject interface
+ */
+[
+    object,
+    uuid(0000010d-0000-0000-c000-000000000046)
+]
+interface IViewObject : IUnknown
+{
+    typedef [unique] IViewObject *LPVIEWOBJECT;
+
+    [local]
+    HRESULT Draw(
+        [in] DWORD dwDrawAspect,
+        [in] LONG lindex,
+        [in, unique] void * pvAspect,
+        [in, unique] DVTARGETDEVICE *ptd,
+        [in] HDC hdcTargetDev,
+        [in] HDC hdcDraw,
+        [in] LPCRECTL lprcBounds,
+        [in, unique] LPCRECTL lprcWBounds,
+        [in] BOOL (*pfnContinue)(ULONG_PTR dwContinue),
+        [in] ULONG_PTR dwContinue);
+
+    [call_as(Draw)]
+    HRESULT RemoteDraw(
+        [in] DWORD dwDrawAspect,
+        [in] LONG lindex,
+        [in] ULONG_PTR pvAspect,
+        [in, unique] DVTARGETDEVICE *ptd,
+        [in] ULONG_PTR hdcTargetDev,
+        [in] ULONG_PTR hdcDraw,
+        [in] LPCRECTL lprcBounds,
+        [in, unique] LPCRECTL lprcWBounds,
+        [in] IContinue *pContinue);
+
+    [local]
+    HRESULT GetColorSet(
+        [in] DWORD dwDrawAspect,
+        [in] LONG lindex,
+        [in, unique] void *pvAspect,
+        [in, unique] DVTARGETDEVICE *ptd,
+        [in] HDC hicTargetDev,
+        [out] struct tagLOGPALETTE **ppColorSet);
+
+    [call_as(GetColorSet)]
+    HRESULT RemoteGetColorSet(
+        [in] DWORD dwDrawAspect,
+        [in] LONG lindex,
+        [in] ULONG_PTR pvAspect,
+        [in, unique] DVTARGETDEVICE *ptd,
+        [in] ULONG_PTR hicTargetDev,
+        [out] struct tagLOGPALETTE **ppColorSet);
+
+    [local]
+    HRESULT Freeze(
+        [in] DWORD dwDrawAspect,
+        [in] LONG lindex,
+        [in, unique] void *pvAspect,
+        [out] DWORD *pdwFreeze);
+
+    [call_as(Freeze)]
+    HRESULT RemoteFreeze(
+        [in] DWORD dwDrawAspect,
+        [in] LONG lindex,
+        [in] ULONG_PTR pvAspect,
+        [out] DWORD *pdwFreeze);
+
+    HRESULT Unfreeze(
+        [in] DWORD dwFreeze);
+
+    HRESULT SetAdvise(
+        [in] DWORD aspects,
+        [in] DWORD advf,
+        [in, unique] IAdviseSink *pAdvSink);
+
+    [local]
+    HRESULT GetAdvise(
+        [out, unique] DWORD *pAspects,
+        [out, unique] DWORD *pAdvf,
+        [out] IAdviseSink **ppAdvSink);
+
+    [call_as(GetAdvise)]
+    HRESULT RemoteGetAdvise(
+        [out] DWORD *pAspects,
+        [out] DWORD *pAdvf,
+        [out] IAdviseSink **ppAdvSink);
+}
+
+
+/*****************************************************************************
+ * IViewObject2 interface
+ */
+[
+    object,
+    uuid(00000127-0000-0000-c000-000000000046)
+]
+interface IViewObject2 : IViewObject
+{
+    typedef [unique] IViewObject2 *LPVIEWOBJECT2;
+
+    HRESULT GetExtent(
+        [in]  DWORD dwDrawAspect,
+        [in]  LONG lindex,
+        [in, unique]  DVTARGETDEVICE* ptd,
+        [out] LPSIZEL lpsizel);
+}
+
+
+/*****************************************************************************
+ * IDropSource interface
+ */
+[
+    local,
+    object,
+    uuid(00000121-0000-0000-c000-000000000046)
+]
+interface IDropSource : IUnknown
+{
+    typedef [unique] IDropSource *LPDROPSOURCE;
+
+    HRESULT QueryContinueDrag(
+        [in] BOOL fEscapePressed,
+        [in] DWORD grfKeyState);
+
+    HRESULT GiveFeedback(
+        [in] DWORD dwEffect);
+}
+
+
+/*****************************************************************************
+ * IDropTarget interface
+ */
+[
+    object,
+    uuid(00000122-0000-0000-c000-000000000046),
+    pointer_default(unique)
+]
+interface IDropTarget : IUnknown
+{
+    typedef [unique] IDropTarget *LPDROPTARGET;
+
+    const DWORD MK_ALT = 0x20;
+    const DWORD DROPEFFECT_NONE = 0;
+    const DWORD DROPEFFECT_COPY = 1;
+    const DWORD DROPEFFECT_MOVE = 2;
+    const DWORD DROPEFFECT_LINK = 4;
+    const DWORD DROPEFFECT_SCROLL = 0x80000000;
+    const DWORD DD_DEFSCROLLINSET = 11;
+    const DWORD DD_DEFSCROLLDELAY = 50;
+    const DWORD DD_DEFSCROLLINTERVAL = 50;
+    const DWORD DD_DEFDRAGDELAY = 200;
+    const DWORD DD_DEFDRAGMINDIST = 2;
+
+    HRESULT DragEnter(
+        [in, unique] IDataObject *pDataObj,
+        [in] DWORD grfKeyState,
+        [in] POINTL pt,
+        [in, out] DWORD *pdwEffect);
+
+    HRESULT DragOver(
+        [in] DWORD grfKeyState,
+        [in] POINTL pt,
+        [in, out] DWORD *pdwEffect);
+
+    HRESULT DragLeave();
+
+    HRESULT Drop(
+        [in, unique] IDataObject *pDataObj,
+        [in] DWORD grfKeyState,
+        [in] POINTL pt,
+        [in, out] DWORD *pdwEffect);
+}
diff --git a/include/wine/obj_cache.h b/include/wine/obj_cache.h
deleted file mode 100644
index d71f866..0000000
--- a/include/wine/obj_cache.h
+++ /dev/null
@@ -1,130 +0,0 @@
-/*
- * Defines the COM interfaces and APIs related to structured data storage.
- *
- * Depends on 'obj_base.h'.
- *
- * Copyright (C) 1999 Paul Quinn
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- */
-
-#ifndef __WINE_WINE_OBJ_CACHE_H
-#define __WINE_WINE_OBJ_CACHE_H
-
-#ifdef __cplusplus
-extern "C" {
-#endif /* defined(__cplusplus) */
-
-/*****************************************************************************
- * Declare the structures
- */
-
-
-/*****************************************************************************
- * Predeclare the interfaces
- */
-
-DEFINE_OLEGUID(IID_IOleCache,  0x0000011eL, 0, 0);
-typedef struct IOleCache IOleCache, *LPOLECACHE;
-
-DEFINE_OLEGUID(IID_IOleCache2,  0x00000128L, 0, 0);
-typedef struct IOleCache2 IOleCache2, *LPOLECACHE2;
-
-DEFINE_OLEGUID(IID_IOleCacheControl,  0x00000129L, 0, 0);
-typedef struct IOleCacheControl IOleCacheControl, *LPOLECACHECONTROL;
-
-/*****************************************************************************
- * IOleCache interface
- */
-#define INTERFACE IOleCache
-#define IOleCache_METHODS \
-	IUnknown_METHODS \
-	STDMETHOD(Cache)(THIS_ FORMATETC *pformatetc, DWORD advf, DWORD * pdwConnection) PURE; \
-	STDMETHOD(Uncache)(THIS_ DWORD dwConnection) PURE; \
-	STDMETHOD(EnumCache)(THIS_ IEnumSTATDATA **ppenumSTATDATA) PURE; \
-	STDMETHOD(InitCache)(THIS_ IDataObject *pDataObject) PURE; \
-	STDMETHOD(SetData)(THIS_ FORMATETC *pformatetc, STGMEDIUM *pmedium, BOOL fRelease) PURE;
-ICOM_DEFINE(IOleCache,IUnknown)
-#undef INTERFACE
-
-#ifdef COBJMACROS
-/*** IUnknown methods ***/
-#define IOleCache_QueryInterface(p,a,b)      (p)->lpVtbl->QueryInterface(p,a,b)
-#define IOleCache_AddRef(p)                  (p)->lpVtbl->AddRef(p)
-#define IOleCache_Release(p)                 (p)->lpVtbl->Release(p)
-/*** IOleCache methods ***/
-#define IOleCache_Cache(p,a,b,c)             (p)->lpVtbl->Cache(p,a,b,c)
-#define IOleCache_Uncache(p,a)               (p)->lpVtbl->Uncache(p,a)
-#define IOleCache_EnumCache(p,a)             (p)->lpVtbl->EnumCache(p,a)
-#define IOleCache_InitCache(p,a)             (p)->lpVtbl->InitCache(p,a)
-#define IOleCache_SetData(p,a,b,c)           (p)->lpVtbl->SetData(p,a,b,c)
-#endif
-
-
-/*****************************************************************************
- * IOleCache2 interface
- */
-#define INTERFACE IOleCache2
-#define IOleCache2_METHODS \
-	IOleCache_METHODS \
-	STDMETHOD(UpdateCache)(THIS_ LPDATAOBJECT pDataObject, DWORD grfUpdf, LPVOID pReserved) PURE; \
-	STDMETHOD(DiscardCache)(THIS_ DWORD dwDiscardOptions) PURE;
-ICOM_DEFINE(IOleCache2,IOleCache)
-#undef INTERFACE
-
-#ifdef COBJMACROS
-/*** IUnknown methods ***/
-#define IOleCache2_QueryInterface(p,a,b)      (p)->lpVtbl->QueryInterface(p,a,b)
-#define IOleCache2_AddRef(p)                  (p)->lpVtbl->AddRef(p)
-#define IOleCache2_Release(p)                 (p)->lpVtbl->Release(p)
-/*** IOleCache methods ***/
-#define IOleCache2_Cache(p,a,b,c)             (p)->lpVtbl->Cache(p,a,b,c)
-#define IOleCache2_Uncache(p,a)               (p)->lpVtbl->Uncache(p,a)
-#define IOleCache2_EnumCache(p,a)             (p)->lpVtbl->EnumCache(p,a)
-#define IOleCache2_InitCache(p,a)             (p)->lpVtbl->InitCache(p,a)
-#define IOleCache2_SetData(p,a,b,c)           (p)->lpVtbl->SetData(p,a,b,c)
-/*** IOleCache2 methods ***/
-#define IOleCache2_UpdateCache(p,a,b,c)       (p)->lpVtbl->UpdateCache(p,a,b,c)
-#define IOleCache2_DiscardCache(p,a)          (p)->lpVtbl->DiscardCache(p,a)
-#endif
-
-
-/*****************************************************************************
- * IOleCacheControl interface
- */
-#define INTERFACE IOleCacheControl
-#define IOleCacheControl_METHODS \
-	IUnknown_METHODS \
-	STDMETHOD(OnRun)(THIS_ LPDATAOBJECT pDataObject) PURE; \
-	STDMETHOD(OnStop)(THIS) PURE;
-ICOM_DEFINE(IOleCacheControl,IUnknown)
-#undef INTERFACE
-
-#ifdef COBJMACROS
-/*** IUnknown methods ***/
-#define IOleCacheControl_QueryInterface(p,a,b)      (p)->lpVtbl->QueryInterface(p,a,b)
-#define IOleCacheControl_AddRef(p)                  (p)->lpVtbl->AddRef(p)
-#define IOleCacheControl_Release(p)                 (p)->lpVtbl->Release(p)
-/*** IOleCacheControl methods ***/
-#define IOleCacheControl_OnRun(p,a)                 (p)->lpVtbl->UpdateCache(p,a)
-#define IOleCacheControl_OnStop(p)                  (p)->lpVtbl->OnStop(p)
-#endif
-
-
-#ifdef __cplusplus
-} /* extern "C" */
-#endif /* defined(__cplusplus) */
-
-#endif /* __WINE_WINE_OBJ_CONTROL_H */
diff --git a/include/wine/obj_dragdrop.h b/include/wine/obj_dragdrop.h
deleted file mode 100644
index 095694b..0000000
--- a/include/wine/obj_dragdrop.h
+++ /dev/null
@@ -1,102 +0,0 @@
-/*
- * Defines the COM interfaces and APIs related to OLE Drag and Drop.
- *
- * Copyright (C) 1999 Francis Beaudet
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- */
-
-#ifndef __WINE_WINE_OBJ_DRAGDROP_H
-#define __WINE_WINE_OBJ_DRAGDROP_H
-
-#ifdef __cplusplus
-extern "C" {
-#endif /* defined(__cplusplus) */
-
-/*****************************************************************************
- * Predeclare the interfaces
- */
-DEFINE_OLEGUID(IID_IDropSource,	0x00000121L, 0, 0);
-typedef struct IDropSource IDropSource,*LPDROPSOURCE;
-
-DEFINE_OLEGUID(IID_IDropTarget,	0x00000122L, 0, 0);
-typedef struct IDropTarget IDropTarget,*LPDROPTARGET;
-
-/*****************************************************************************
- * DROPEFFECT enumeration
- */
-#define MK_ALT (0x20)
-#define	DROPEFFECT_NONE		0
-#define	DROPEFFECT_COPY		1
-#define	DROPEFFECT_MOVE		2
-#define	DROPEFFECT_LINK		4
-#define	DROPEFFECT_SCROLL	0x80000000
-#define DD_DEFSCROLLINSET 11
-#define DD_DEFSCROLLDELAY 50
-#define DD_DEFSCROLLINTERVAL 50
-#define DD_DEFDRAGDELAY   50
-#define DD_DEFDRAGMINDIST  2
-
-/*****************************************************************************
- * IDropSource interface
- */
-#define INTERFACE IDropSource
-#define IDropSource_METHODS \
-    IUnknown_METHODS \
-    STDMETHOD(QueryContinueDrag)(THIS_ BOOL  fEscapePressed, DWORD  grfKeyState) PURE; \
-    STDMETHOD(GiveFeedback)(THIS_ DWORD  dwEffect) PURE;
-ICOM_DEFINE(IDropSource,IUnknown)
-#undef INTERFACE
-
-#ifdef COBJMACROS
-/*** IUnknown methods ***/
-#define IDropSource_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
-#define IDropSource_AddRef(p)             (p)->lpVtbl->AddRef(p)
-#define IDropSource_Release(p)            (p)->lpVtbl->Release(p)
-/*** IDropSource methods ***/
-#define IDropSource_QueryContinueDrag(p,a,b) (p)->lpVtbl->QueryContinueDrag(p,a,b)
-#define IDropSource_GiveFeedback(p,a)        (p)->lpVtbl->GiveFeedback(p,a)
-#endif
-
-/*****************************************************************************
- * IDropTarget interface
- */
-#define INTERFACE IDropTarget
-#define IDropTarget_METHODS \
-    IUnknown_METHODS \
-    STDMETHOD(DragEnter)(THIS_ IDataObject * pDataObject, DWORD  grfKeyState, POINTL  pt, DWORD * pdwEffect) PURE; \
-    STDMETHOD(DragOver)(THIS_ DWORD  grfKeyState, POINTL  pt, DWORD * pdwEffect) PURE; \
-    STDMETHOD(DragLeave)(THIS) PURE; \
-    STDMETHOD(Drop)(THIS_ IDataObject * pDataObject, DWORD  grfKeyState, POINTL  pt, DWORD * pdwEffect) PURE;
-ICOM_DEFINE(IDropTarget,IUnknown)
-#undef INTERFACE
-
-#ifdef COBJMACROS
-/*** IUnknown methods ***/
-#define IDropTarget_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
-#define IDropTarget_AddRef(p)             (p)->lpVtbl->AddRef(p)
-#define IDropTarget_Release(p)            (p)->lpVtbl->Release(p)
-/*** IDropTarget methods ***/
-#define IDropTarget_DragEnter(p,a,b,c,d)  (p)->lpVtbl->DragEnter(p,a,b,c,d)
-#define IDropTarget_DragOver(p,a,b,c)     (p)->lpVtbl->DragOver(p,a,b,c)
-#define IDropTarget_DragLeave(p)          (p)->lpVtbl->DragLeave(p)
-#define IDropTarget_Drop(p,a,b,c,d)       (p)->lpVtbl->Drop(p,a,b,c,d)
-#endif
-
-#ifdef __cplusplus
-} /* extern "C" */
-#endif /* defined(__cplusplus) */
-
-#endif /*  __WINE_WINE_OBJ_DRAGDROP_H */
diff --git a/include/wine/obj_inplace.h b/include/wine/obj_inplace.h
deleted file mode 100644
index 9a9853d..0000000
--- a/include/wine/obj_inplace.h
+++ /dev/null
@@ -1,496 +0,0 @@
-/*
- * Defines the COM interfaces and APIs related to structured data storage.
- *
- * Depends on 'obj_base.h'.
- *
- * Copyright (C) 1999 Paul Quinn
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- */
-
-#ifndef __WINE_WINE_OBJ_INPLACE_H
-#define __WINE_WINE_OBJ_INPLACE_H
-
-struct tagMSG;
-
-#ifdef __cplusplus
-extern "C" {
-#endif /* defined(__cplusplus) */
-
-/*****************************************************************************
- * Predeclare the structures
- */
-typedef struct  tagOleMenuGroupWidths
-{
-	LONG width[ 6 ];
-} OLEMENUGROUPWIDTHS, *LPOLEMENUGROUPWIDTHS;
-
-
-typedef struct tagOleInPlaceFrameInfo
-{
-	UINT cb;
-	BOOL fMDIApp;
-	HWND hwndFrame;
-	HACCEL haccel;
-	UINT cAccelEntries;
-} OLEINPLACEFRAMEINFO, *LPOLEINPLACEFRAMEINFO;
-
-typedef enum tagOLEGETMONIKER
-{
-	OLEGETMONIKER_ONLYIFTHERE = 1,
-	OLEGETMONIKER_FORCEASSIGN = 2,
-	OLEGETMONIKER_UNASSIGN = 3,
-	OLEGETMONIKER_TEMPFORUSER = 4
-} OLEGETMONIKER;
-
-typedef enum tagOLERENDER
-{
-	OLERENDER_NONE = 0,
-	OLERENDER_DRAW = 1,
-	OLERENDER_FORMAT = 2,
-	OLERENDER_ASIS = 3
-} OLERENDER;
-
-typedef enum tagUSERCLASSTYPE
-{
-	USERCLASSTYPE_FULL = 1,
-	USERCLASSTYPE_SHORT = 2,
-	USERCLASSTYPE_APPNAME = 3
-} USERCLASSTYPE;
-
-typedef enum tagOLECLOSE
-{
-	OLECLOSE_SAVEIFDIRTY = 1,
-	OLECLOSE_NOSAVE = 2,
-	OLECLOSE_PROMPTSAVE = 3
-} OLECLOSE;
-
-typedef enum tagOLEUPDATE
-{
-	OLEUPDATE_ALWAYS = 1,
-	OLEUPDATE_ONCALL = 3
-} OLEUPDATE, *LPOLEUPDATE;
-
-typedef struct tagOLEVERB
-{
-	LONG lVerb;
-	LPOLESTR lpszVerbName;
-	DWORD fuFlags;
-	DWORD grfAttribs;
-} OLEVERB, *LPOLEVERB;
-
-typedef enum tagOLELINKBIND
-{
-	OLELINKBIND_EVENIFCLASSDIFF = 1
-} OLELINKBIND;
-
-typedef enum tagOLEWHICHMK
-{
-	OLEWHICHMK_CONTAINER = 1,
-	OLEWHICHMK_OBJREL = 2,
-	OLEWHICHMK_OBJFULL = 3
-} OLEWHICHMK;
-
-typedef enum tagBINDSPEED
-{
-	BINDSPEED_INDEFINITE = 1,
-	BINDSPEED_MODERATE = 2,
-	BINDSPEED_IMMEDIATE = 3
-} BINDSPEED;
-
-typedef enum tagOLECONTF
-{
-	OLECONTF_EMBEDDINGS = 1,
-	OLECONTF_LINKS = 2,
-	OLECONTF_OTHERS = 4,
-	OLECONTF_OLNYUSER = 8,
-	OLECONTF_ONLYIFRUNNING = 16
-} OLECONTF;
-
-typedef HGLOBAL HOLEMENU;
-typedef LPRECT LPBORDERWIDTHS;
-typedef LPCRECT LPCBORDERWIDTHS;
-
-
-/*****************************************************************************
- * Predeclare the interfaces
- */
-DEFINE_OLEGUID(IID_IOleWindow,  0x00000114L, 0, 0);
-typedef struct IOleWindow IOleWindow, *LPOLEWINDOW;
-
-DEFINE_OLEGUID(IID_IOleInPlaceObject,  0x00000113L, 0, 0);
-typedef struct IOleInPlaceObject IOleInPlaceObject, *LPOLEINPLACEOBJECT;
-
-DEFINE_OLEGUID(IID_IOleInPlaceActiveObject,  0x00000117L, 0, 0);
-typedef struct IOleInPlaceActiveObject IOleInPlaceActiveObject, *LPOLEINPLACEACTIVEOBJECT;
-
-DEFINE_OLEGUID(IID_IOleInPlaceUIWindow,  0x00000115L, 0, 0);
-typedef struct IOleInPlaceUIWindow IOleInPlaceUIWindow, *LPOLEINPLACEUIWINDOW;
-
-DEFINE_OLEGUID(IID_IOleInPlaceFrame,  0x00000116L, 0, 0);
-typedef struct IOleInPlaceFrame IOleInPlaceFrame, *LPOLEINPLACEFRAME;
-
-DEFINE_OLEGUID(IID_IOleInPlaceSite,  0x00000119L, 0, 0);
-typedef struct IOleInPlaceSite IOleInPlaceSite, *LPOLEINPLACESITE;
-
-DEFINE_OLEGUID(IID_IOleClientSite,  0x00000118L, 0, 0);
-typedef struct IOleClientSite IOleClientSite, *LPOLECLIENTSITE;
-
-DEFINE_OLEGUID(IID_IOleContainer,  0x0000011bL, 0, 0);
-typedef struct IOleContainer IOleContainer, *LPOLECONTAINER;
-
-DEFINE_OLEGUID(IID_IParseDisplayName,  0x0000011aL, 0, 0);
-typedef struct IParseDisplayName IParseDisplayName, *LPPARSEDISPLAYNAME;
-
-DEFINE_OLEGUID(IID_IOleItemContainer,  0x0000011cL, 0, 0);
-typedef struct IOleItemContainer IOleItemContainer, *LPOLEITEMCONTAINER;
-
-DEFINE_OLEGUID(IID_IOleLink,  0x0000011dL, 0, 0);
-typedef struct IOleLink IOleLink, *LPOLELINK;
-
-/*****************************************************************************
- * IOleWindow interface
- */
-#define INTERFACE IOleWindow
-#define IOleWindow_METHODS \
-	IUnknown_METHODS \
-	STDMETHOD(GetWindow)(THIS_ HWND *phwnd) PURE; \
-	STDMETHOD(ContextSensitiveHelp)(THIS_ BOOL fEnterMode) PURE;
-ICOM_DEFINE(IOleWindow,IUnknown)
-#undef INTERFACE
-
-#ifdef COBJMACROS
-/*** IUnknown methods ***/
-#define IOleWindow_QueryInterface(p,a,b)      (p)->lpVtbl->QueryInterface(p,a,b)
-#define IOleWindow_AddRef(p)                  (p)->lpVtbl->AddRef(p)
-#define IOleWindow_Release(p)                 (p)->lpVtbl->Release(p)
-/*** IOleWindow methods ***/
-#define IOleWindow_GetWindow(p,a)             (p)->lpVtbl->GetWindow(p,a)
-#define IOleWindow_ContextSensitiveHelp(p,a)  (p)->lpVtbl->ContextSensitiveHelp(p,a)
-#endif
-
-
-/*****************************************************************************
- * IOleInPlaceObject interface
- */
-#define INTERFACE IOleInPlaceObject
-#define IOleInPlaceObject_METHODS \
-	IOleWindow_METHODS \
-	STDMETHOD(InPlaceDeactivate)(THIS) PURE; \
-	STDMETHOD(UIDeactivate)(THIS) PURE; \
-	STDMETHOD(SetObjectRects)(THIS_ LPCRECT lprcPosRect, LPCRECT lprcClipRect) PURE; \
-	STDMETHOD(ReactivateAndUndo)(THIS) PURE;
-ICOM_DEFINE(IOleInPlaceObject,IOleWindow)
-#undef INTERFACE
-
-#ifdef COBJMACROS
-/*** IUnknown methods ***/
-#define IOleInPlaceObject_QueryInterface(p,a,b)      (p)->lpVtbl->QueryInterface(p,a,b)
-#define IOleInPlaceObject_AddRef(p)                  (p)->lpVtbl->AddRef(p)
-#define IOleInPlaceObject_Release(p)                 (p)->lpVtbl->Release(p)
-/*** IOleWindow methods ***/
-#define IOleInPlaceObject_GetWindow(p,a)             (p)->lpVtbl->GetWindow(p,a)
-#define IOleInPlaceObject_ContextSensitiveHelp(p,a)  (p)->lpVtbl->ContextSensitiveHelp(p,a)
-/*** IOleInPlaceObject methods ***/
-#define IOleInPlaceObject_InPlaceDeactivate(p)       (p)->lpVtbl->InPlaceDeactivate(p)
-#define IOleInPlaceObject_UIDeactivate(p)            (p)->lpVtbl->UIDeactivate(p)
-#define IOleInPlaceObject_SetObjectRects(p,a,b)      (p)->lpVtbl->SetObjectRects(p,a,b)
-#define IOleInPlaceObject_ReactivateAndUndo(p)       (p)->lpVtbl->ReactivateAndUndo(p)
-#endif
-
-/*****************************************************************************
- * IOleInPlaceActiveObject interface
- */
-#define INTERFACE IOleInPlaceActiveObject
-#define IOleInPlaceActiveObject_METHODS \
-	IOleWindow_METHODS \
-	STDMETHOD(TranslateAccelerator)(THIS_ struct tagMSG *lpmsg) PURE; \
-	STDMETHOD(OnFrameWindowActivate)(THIS_ BOOL fActivate) PURE; \
-	STDMETHOD(OnDocWindowActivate)(THIS_ BOOL fActivate) PURE; \
-	STDMETHOD(ResizeBorder)(THIS_ LPCRECT prcBorder, IOleInPlaceUIWindow *pUIWindow, BOOL fWindowFrame) PURE; \
-	STDMETHOD(EnableModeless)(THIS_ BOOL fEnable) PURE;
-ICOM_DEFINE(IOleInPlaceActiveObject,IOleWindow)
-#undef INTERFACE
-
-#ifdef COBJMACROS
-/*** IUnknown methods ***/
-#define IOleInPlaceActiveObject_QueryInterface(p,a,b)      (p)->lpVtbl->QueryInterface(p,a,b)
-#define IOleInPlaceActiveObject_AddRef(p)                  (p)->lpVtbl->AddRef(p)
-#define IOleInPlaceActiveObject_Release(p)                 (p)->lpVtbl->Release(p)
-/*** IOleWindow methods ***/
-#define IOleInPlaceActiveObject_GetWindow(p,a)             (p)->lpVtbl->GetWindow(p,a)
-#define IOleInPlaceActiveObject_ContextSensitiveHelp(p,a)  (p)->lpVtbl->ContextSensitiveHelp(p,a)
-/*** IOleInPlaceActiveObject methods ***/
-#define IOleInPlaceActiveObject_TranslateAccelerator(p,a)  (p)->lpVtbl->TranslateAccelerator(p,a)
-#define IOleInPlaceActiveObject_OnFrameWindowActivate(p,a) (p)->lpVtbl->OnFrameWindowActivate(p,a)
-#define IOleInPlaceActiveObject_OnDocWindowActivate(p,a)   (p)->lpVtbl->OnDocWindowActivate(p,a)
-#define IOleInPlaceActiveObject_ResizeBorder(p,a,b,c)      (p)->lpVtbl->ResizeBorder(p,a,b,c)
-#define IOleInPlaceActiveObject_EnableModeless(p,a)        (p)->lpVtbl->EnableModeless(p,a)
-#endif
-
-/*****************************************************************************
- * IOleInPlaceUIWindow interface
- */
-#define INTERFACE IOleInPlaceUIWindow
-#define IOleInPlaceUIWindow_METHODS \
-	IOleWindow_METHODS \
-	STDMETHOD(GetBorder)(THIS_ LPRECT lprectBorder) PURE; \
-	STDMETHOD(RequestBorderSpace)(THIS_ LPCBORDERWIDTHS pborderwidths) PURE; \
-	STDMETHOD(SetBorderSpace)(THIS_ LPCBORDERWIDTHS pborderwidths) PURE; \
-	STDMETHOD(SetActiveObject)(THIS_ IOleInPlaceActiveObject *pActiveObject, LPCOLESTR pszObjName) PURE;
-ICOM_DEFINE(IOleInPlaceUIWindow,IOleWindow)
-#undef INTERFACE
-
-#ifdef COBJMACROS
-/*** IUnknown methods ***/
-#define IOleInPlaceUIWindow_QueryInterface(p,a,b)     (p)->lpVtbl->QueryInterface(p,a,b)
-#define IOleInPlaceUIWindow_AddRef(p)                 (p)->lpVtbl->AddRef(p)
-#define IOleInPlaceUIWindow_Release(p)                (p)->lpVtbl->Release(p)
-/*** IOleWindow methods ***/
-#define IOleInPlaceUIWindow_GetWindow(p,a)            (p)->lpVtbl->GetWindow(p,a)
-#define IOleInPlaceUIWindow_ContextSensitiveHelp(p,a) (p)->lpVtbl->ContextSensitiveHelp(p,a)
-/*** IOleInPlaceUIWindow methods ***/
-#define IOleInPlaceUIWindow_GetBorder(p,a)            (p)->lpVtbl->GetBorder(p,a)
-#define IOleInPlaceUIWindow_RequestBorderSpace(p,a)   (p)->lpVtbl->RequestBorderSpace(p,a)
-#define IOleInPlaceUIWindow_SetBorderSpace(p,a)       (p)->lpVtbl->SetBorderSpace(p,a)
-#define IOleInPlaceUIWindow_SetActiveObject(p,a,b)    (p)->lpVtbl->SetActiveObject(p,a,b)
-#endif
-
-
-/*****************************************************************************
- * IOleInPlaceFrame interface
- */
-#define INTERFACE IOleInPlaceFrame
-#define IOleInPlaceFrame_METHODS \
-	IOleInPlaceUIWindow_METHODS \
-	STDMETHOD(InsertMenus)(THIS_ HMENU hemnuShared, LPOLEMENUGROUPWIDTHS lpMenuWidths) PURE; \
-	STDMETHOD(SetMenu)(THIS_ HMENU hemnuShared, HOLEMENU holemenu, HWND hwndActiveObject) PURE; \
-	STDMETHOD(RemoveMenus)(THIS_ HMENU hemnuShared) PURE; \
-	STDMETHOD(SetStatusText)(THIS_ LPCOLESTR pszStatusText) PURE; \
-	STDMETHOD(EnableModeless)(THIS_ BOOL fEnable) PURE; \
-	STDMETHOD(TranslateAccelerator)(THIS_ struct tagMSG *lpmsg, WORD wID) PURE;
-ICOM_DEFINE(IOleInPlaceFrame,IOleInPlaceUIWindow)
-#undef INTERFACE
-
-#ifdef COBJMACROS
-/*** IUnknown methods ***/
-#define IOleInPlaceFrame_QueryInterface(p,a,b)    (p)->lpVtbl->QueryInterface(p,a,b)
-#define IOleInPlaceFrame_AddRef(p)                (p)->lpVtbl->AddRef(p)
-#define IOleInPlaceFrame_Release(p)               (p)->lpVtbl->Release(p)
-/*** IOleWindow methods ***/
-#define IOleInPlaceFrame_GetWindow(p,a)           (p)->lpVtbl->GetWindow(p,a)
-#define IOleInPlaceFrame_ContextSensitiveHelp(p,a) (p)->lpVtbl->ContextSensitiveHelp(p,a)
-/*** IOleInPlaceUIWindow methods ***/
-#define IOleInPlaceFrame_GetBorder(p,a)           (p)->lpVtbl->GetBorder(p,a)
-#define IOleInPlaceFrame_RequestBorderSpace(p,a)  (p)->lpVtbl->RequestBorderSpace(p,a)
-#define IOleInPlaceFrame_SetBorderSpace(p,a)      (p)->lpVtbl->SetBorderSpace(p,a)
-#define IOleInPlaceFrame_SetActiveObject(p,a,b)   (p)->lpVtbl->SetActiveObject(p,a,b)
-/*** IOleInPlaceFrame methods ***/
-#define IOleInPlaceFrame_InsertMenus(p,a,b)       (p)->lpVtbl->InsertMenus(p,a,b)
-#define IOleInPlaceFrame_SetMenu(p,a,b,c)         (p)->lpVtbl->SetMenu(p,a,b,c)
-#define IOleInPlaceFrame_RemoveMenus(p,a)         (p)->lpVtbl->RemoveMenus(p,a)
-#define IOleInPlaceFrame_SetStatusText(p,a)       (p)->lpVtbl->SetStatusText(p,a)
-#define IOleInPlaceFrame_EnableModeless(p,a)      (p)->lpVtbl->EnableModeless(p,a)
-#define IOleInPlaceFrame_TranslateAccelerator(p,a,b) (p)->lpVtbl->TranslateAccelerator(p,a,b)
-#endif
-
-
-/*****************************************************************************
- * IOleInPlaceSite interface
- */
-#define INTERFACE IOleInPlaceSite
-#define IOleInPlaceSite_METHODS \
-	IOleWindow_METHODS \
-	STDMETHOD(CanInPlaceActivate)(THIS) PURE; \
-	STDMETHOD(OnInPlaceActivate)(THIS) PURE; \
-	STDMETHOD(OnUIActivate)(THIS) PURE; \
-	STDMETHOD(GetWindowContext)(THIS_ IOleInPlaceFrame **ppFrame, IOleInPlaceUIWindow **ppDoc, LPRECT lprcPosRect, LPRECT lprcClipRect, LPOLEINPLACEFRAMEINFO lpFrameInfo) PURE; \
-	STDMETHOD(Scroll)(THIS_ SIZE scrollExtant) PURE; \
-	STDMETHOD(OnUIDeactivate)(THIS_ BOOL fUndoable) PURE; \
-	STDMETHOD(OnInPlaceDeactivate)(THIS) PURE; \
-	STDMETHOD(DiscardUndoState)(THIS) PURE; \
-	STDMETHOD(DeactivateAndUndo)(THIS) PURE; \
-	STDMETHOD(OnPosRectChange)(THIS_ LPCRECT lprcPosRect) PURE;
-ICOM_DEFINE(IOleInPlaceSite,IOleWindow)
-#undef INTERFACE
-
-#ifdef COBJMACROS
-/*** IUnknown methods ***/
-#define IOleInPlaceSite_QueryInterface(p,a,b)      (p)->lpVtbl->QueryInterface(p,a,b)
-#define IOleInPlaceSite_AddRef(p)                  (p)->lpVtbl->AddRef(p)
-#define IOleInPlaceSite_Release(p)                 (p)->lpVtbl->Release(p)
-/*** IOleWindow methods ***/
-#define IOleInPlaceSite_GetWindow(p,a)             (p)->lpVtbl->GetWindow(p,a)
-#define IOleInPlaceSite_ContextSensitiveHelp(p,a)  (p)->lpVtbl->ContextSensitiveHelp(p,a)
-/*** IOleInPlaceSite methods ***/
-#define IOleInPlaceSite_CanInPlaceActivate(p)      (p)->lpVtbl->CanInPlaceActivate(p)
-#define IOleInPlaceSite_OnInPlaceActivate(p)       (p)->lpVtbl->OnInPlaceActivate(p)
-#define IOleInPlaceSite_OnUIActivate(p)            (p)->lpVtbl->OnUIActivate(p)
-#define IOleInPlaceSite_GetWindowContext(p,a,b,c,d,e) (p)->lpVtbl->GetWindowContext(p,a,b,c,d,e)
-#define IOleInPlaceSite_Scroll(p,a)                (p)->lpVtbl->Scroll(p,a)
-#define IOleInPlaceSite_OnUIDeactivate(p,a)        (p)->lpVtbl->OnUIDeactivate(p,a)
-#define IOleInPlaceSite_OnInPlaceDeactivate(p)     (p)->lpVtbl->OnInPlaceDeactivate(p)
-#define IOleInPlaceSite_DiscardUndoState(p)        (p)->lpVtbl->DiscardUndoState(p)
-#define IOleInPlaceSite_DeactivateAndUndo(p)       (p)->lpVtbl->DeactivateAndUndo(p)
-#define IOleInPlaceSite_OnPosRectChange(p,a)       (p)->lpVtbl->OnPosRectChange(p,a)
-#endif
-
-
-/*****************************************************************************
- * IOleClientSite interface
- */
-#define INTERFACE IOleClientSite
-#define IOleClientSite_METHODS \
-	IUnknown_METHODS \
-	STDMETHOD(SaveObject)(THIS) PURE; \
-	STDMETHOD(GetMoniker)(THIS_ DWORD dwAssign, DWORD dwWhichMoniker, IMoniker **ppmk) PURE; \
-	STDMETHOD(GetContainer)(THIS_ IOleContainer **ppContainer) PURE; \
-	STDMETHOD(ShowObject)(THIS) PURE; \
-	STDMETHOD(OnShowWindow)(THIS_ BOOL fShow) PURE; \
-	STDMETHOD(RequestNewObjectLayout)(THIS) PURE;
-ICOM_DEFINE(IOleClientSite,IUnknown)
-#undef INTERFACE
-
-#ifdef COBJMACROS
-/*** IUnknown methods ***/
-#define IOleClientSite_QueryInterface(p,a,b)      (p)->lpVtbl->QueryInterface(p,a,b)
-#define IOleClientSite_AddRef(p)                  (p)->lpVtbl->AddRef(p)
-#define IOleClientSite_Release(p)                 (p)->lpVtbl->Release(p)
-/*** IOleClientSite methods ***/
-#define IOleClientSite_SaveObject(p)              (p)->lpVtbl->SaveObject(p)
-#define IOleClientSite_GetMoniker(p,a,b,c)        (p)->lpVtbl->GetMoniker(p,a,b,c)
-#define IOleClientSite_GetContainer(p,a)          (p)->lpVtbl->GetContainer(p,a)
-#define IOleClientSite_ShowObject(p)              (p)->lpVtbl->ShowObject(p)
-#define IOleClientSite_OnShowWindow(p,a)          (p)->lpVtbl->OnShowWindow(p,a)
-#define IOleClientSite_RequestNewObjectLayout(p)  ICOM_CALL (RequestNewObjectLayout(p)
-#endif
-
-
-/*****************************************************************************
- * IParseDisplayName interface
- */
-#define INTERFACE IParseDisplayName
-#define IParseDisplayName_METHODS \
-	IUnknown_METHODS \
-	STDMETHOD(ParseDisplayName)(THIS_ IBindCtx *pbc, LPOLESTR pszDisplayName, ULONG *pchEaten, IMoniker **ppmkOut) PURE;
-ICOM_DEFINE(IParseDisplayName,IUnknown)
-#undef INTERFACE
-
-#ifdef COBJMACROS
-/*** IUnknown methods ***/
-#define IParseDisplayName_QueryInterface(p,a,b)      (p)->lpVtbl->QueryInterface(p,a,b)
-#define IParseDisplayName_AddRef(p)                  (p)->lpVtbl->AddRef(p)
-#define IParseDisplayName_Release(p)                 (p)->lpVtbl->Release(p)
-/*** IParseDisplayName methods ***/
-#define IParseDisplayName_ParseDisplayName(p,a,b,c,d) (p)->lpVtbl->ParseDisplayName(p,a,b,c,d)
-#endif
-
-
-/*****************************************************************************
- * IOleContainer interface
- */
-#define INTERFACE IOleContainer
-#define IOleContainer_METHODS \
-	IParseDisplayName_METHODS \
-	STDMETHOD(EnumObjects)(THIS_ DWORD grfFlags, IEnumUnknown **ppenum) PURE; \
-	STDMETHOD(LockContainer)(THIS_ BOOL fLock) PURE;
-ICOM_DEFINE(IOleContainer,IParseDisplayName)
-#undef INTERFACE
-
-#ifdef COBJMACROS
-/*** IUnknown methods ***/
-#define IOleContainer_QueryInterface(p,a,b)       (p)->lpVtbl->QueryInterface(p,a,b)
-#define IOleContainer_AddRef(p)                   (p)->lpVtbl->AddRef(p)
-#define IOleContainer_Release(p)                  (p)->lpVtbl->Release(p)
-/*** IParseDisplayName methods ***/
-#define IOleContainer_ParseDisplayName(p,a,b,c,d) (p)->lpVtbl->ParseDisplayName(p,a,b,c,d)
-/*** IOleClientSite methods ***/
-#define IOleContainer_EnumObjects(p,a,b)          (p)->lpVtbl->EnumObjects(p,a,b)
-#define IOleContainer_LockContainer(p,a)          (p)->lpVtbl->LockContainer(p,a)
-#endif
-
-
-/*****************************************************************************
- * IOleItemContainer interface
- */
-#ifdef __WINESRC__
-#undef GetObject
-#endif
-
-#define INTERFACE IOleItemContainer
-#define IOleItemContainer_METHODS \
-	IOleContainer_METHODS \
-	STDMETHOD(GetObject)(THIS_ LPOLESTR pszItem, DWORD dwSpeedNeeded, IBindCtx *pbc, REFIID riid, void **ppvObject) PURE; \
-	STDMETHOD(GetObjectStorage)(THIS_ LPOLESTR pszItem, IBindCtx *pbc, REFIID riid, void **ppvStorage) PURE; \
-	STDMETHOD(IsRunning)(THIS_ LPOLESTR pszItem) PURE;
-ICOM_DEFINE(IOleItemContainer,IOleContainer)
-#undef INTERFACE
-
-#ifdef COBJMACROS
-/*** IUnknown methods ***/
-#define IOleItemContainer_QueryInterface(p,a,b)       (p)->lpVtbl->QueryInterface(p,a,b)
-#define IOleItemContainer_AddRef(p)                   (p)->lpVtbl->AddRef(p)
-#define IOleItemContainer_Release(p)                  (p)->lpVtbl->Release(p)
-/*** IParseDisplayName methods ***/
-#define IOleItemContainer_GetObject(p,a,b,c,d,e)      (p)->lpVtbl->GetObject(p,a,b,c,d,e)
-#define IOleItemContainer_GetObjectStorage(p,a,b,c,d) (p)->lpVtbl->GetObjectStorage(p,a,b,c,d)
-#define IOleItemContainer_IsRunning(p,a)              (p)->lpVtbl->IsRunning(p,a)
-#endif
-
-
-/*****************************************************************************
- * IOleItemContainer interface
- */
-#define INTERFACE IOleLink
-#define IOleLink_METHODS \
-	IUnknown_METHODS \
-	STDMETHOD(SetUpdateOptions)(THIS_ DWORD dwUpdateOpt) PURE; \
-	STDMETHOD(GetUpdateOptions)(THIS_ DWORD *pdwUpdateOpt) PURE; \
-	STDMETHOD(SetSourceMoniker)(THIS_ IMoniker *pmk, REFCLSID rclsid) PURE; \
-	STDMETHOD(GetSourceMoniker)(THIS_ IMoniker **ppmk) PURE; \
-	STDMETHOD(SetSourceDisplayName)(THIS_ LPCOLESTR pszStatusText) PURE; \
-	STDMETHOD(GetSourceDisplayName)(THIS_ LPOLESTR *ppszDisplayName) PURE; \
-	STDMETHOD(BindToSource)(THIS_ DWORD bindflags, IBindCtx *pbc) PURE; \
-	STDMETHOD(BindIfRunning)(THIS) PURE; \
-	STDMETHOD(GetBoundSource)(THIS_ IUnknown **ppunk) PURE; \
-	STDMETHOD(UnBindSource)(THIS) PURE; \
-	STDMETHOD(Update)(THIS_ IBindCtx *pbc) PURE;
-ICOM_DEFINE(IOleLink,IUnknown)
-#undef INTERFACE
-
-#ifdef COBJMACROS
-/*** IUnknown methods ***/
-#define IOleLink_QueryInterface(p,a,b)       (p)->lpVtbl->QueryInterface(p,a,b)
-#define IOleLink_AddRef(p)                   (p)->lpVtbl->AddRef(p)
-#define IOleLink_Release(p)                  (p)->lpVtbl->Release(p)
-/*** IOleLink methods ***/
-#define IOleLink_SetUpdateOptions(p,a)       (p)->lpVtbl->SetUpdateOptions(p,a)
-#define IOleLink_GetUpdateOptions(p,a)       (p)->lpVtbl->GetUpdateOptions(p,a)
-#define IOleLink_SetSourceMoniker(p,a,b)     (p)->lpVtbl->SetSourceMoniker(p,a,b)
-#define IOleLink_GetSourceMoniker(p,a)       (p)->lpVtbl->GetSourceMoniker(p,a)
-#define IOleLink_SetSourceDisplayName(p,a)   (p)->lpVtbl->SetSourceDisplayName(p,a)
-#define IOleLink_GetSourceDisplayName(p,a)   (p)->lpVtbl->GetSourceDisplayName(p,a)
-#define IOleLink_BindToSource(p,a,b)         (p)->lpVtbl->BindToSource(p,a,b)
-#define IOleLink_BindIfRunning(p)            (p)->lpVtbl->BindIfRunning(p)
-#define IOleLink_GetBoundSource(p,a)         (p)->lpVtbl->GetBoundSource(p,a)
-#define IOleLink_UnBindSource(p)             (p)->lpVtbl->UnBindSource(p)
-#define IOleLink_Update(p,a)                 (p)->lpVtbl->Update(p,a)
-#endif
-
-#ifdef __cplusplus
-} /* extern "C" */
-#endif /* defined(__cplusplus) */
-
-#endif /* __WINE_WINE_OBJ_INPLACE_H */
diff --git a/include/wine/obj_oleobj.h b/include/wine/obj_oleobj.h
deleted file mode 100644
index 2a8f50b..0000000
--- a/include/wine/obj_oleobj.h
+++ /dev/null
@@ -1,211 +0,0 @@
-/*
- * Defines IOleObject COM and other oleidl.h interfaces
- *
- * Depends on 'obj_base.h'.
- *
- * Copyright (C) 1999 Paul Quinn
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- */
-
-#ifndef __WINE_WINE_OBJ_OLEOBJ_H
-#define __WINE_WINE_OBJ_OLEOBJ_H
-
-struct tagMSG;
-struct tagLOGPALETTE;
-
-#ifdef __cplusplus
-extern "C" {
-#endif /* defined(__cplusplus) */
-
-/*****************************************************************************
- * Declare the structures
- */
-typedef struct tagOBJECTDESCRIPTOR
-{
-	ULONG cbSize;
-	CLSID clsid;
-	DWORD dwDrawAspect;
-	SIZEL sizel;
-	POINTL pointl;
-	DWORD dwStatus;
-	DWORD dwFullUserTypeName;
-	DWORD dwSrcOfCopy;
-} OBJECTDESCRIPTOR, *LPOBJECTDESCRIPTOR;
-
-typedef enum tagOLEMISC
-{
-	OLEMISC_RECOMPOSEONRESIZE = 0x1,
-	OLEMISC_ONLYICONIC = 0x2,
-	OLEMISC_INSERTNOTREPLACE = 0x4,
-	OLEMISC_STATIC = 0x8,
-	OLEMISC_CANTLINKINSIDE = 0x10,
-	OLEMISC_CANLINKBYOLE1 = 0x20,
-	OLEMISC_ISLINKOBJECT = 0x40,
-	OLEMISC_INSIDEOUT = 0x80,
-	OLEMISC_ACTIVATEWHENVISIBLE = 0x100,
-	OLEMISC_RENDERINGISDEVICEINDEPENDENT = 0x200,
-	OLEMISC_INVISIBLEATRUNTIME = 0x400,
-	OLEMISC_ALWAYSRUN = 0x800,
-	OLEMISC_ACTSLIKEBUTTON = 0x1000,
-	OLEMISC_ACTSLIKELABEL = 0x2000,
-	OLEMISC_NOUIACTIVATE = 0x4000,
-	OLEMISC_ALIGNABLE = 0x8000,
-	OLEMISC_SIMPLEFRAME = 0x10000,
-	OLEMISC_SETCLIENTSITEFIRST = 0x20000,
-	OLEMISC_IMEMODE = 0x40000,
-	OLEMISC_IGNOREACTIVATEWHENVISIBLE = 0x80000,
-	OLEMISC_WANTSTOMENUMERGE = 0x100000,
-	OLEMISC_SUPPORTSMULTILEVELUNDO = 0x200000
-} OLEMISC;
-
-typedef enum tagOLEVERBATTRIB
-{
-	OLEVERBATTRIB_NEVERDIRTIES = 1,
-	OLEVERBATTRIB_ONCONTAINERMENU = 2
-} OLEVERBATTRIB;
-
-/*****************************************************************************
- * Predeclare the interfaces
- */
-DEFINE_OLEGUID(IID_IOleObject,  0x00000112L, 0, 0);
-typedef struct IOleObject IOleObject, *LPOLEOBJECT;
-
-DEFINE_OLEGUID(IID_IOleAdviseHolder,  0x00000111L, 0, 0);
-typedef struct IOleAdviseHolder IOleAdviseHolder, *LPOLEADVISEHOLDER;
-
-DEFINE_OLEGUID(IID_IEnumOLEVERB,  0x00000104L, 0, 0);
-typedef struct IEnumOLEVERB IEnumOLEVERB, *LPENUMOLEVERB;
-
-/*****************************************************************************
- * IOleObject interface
- */
-#define INTERFACE IOleObject
-#define IOleObject_METHODS \
-	IUnknown_METHODS \
-	STDMETHOD(SetClientSite)(THIS_ IOleClientSite *pClientSite) PURE; \
-	STDMETHOD(GetClientSite)(THIS_ IOleClientSite **ppClientSite) PURE; \
-	STDMETHOD(SetHostNames)(THIS_ LPCOLESTR szContainerApp, LPCOLESTR szContainerObj) PURE; \
-	STDMETHOD(Close)(THIS_ DWORD dwSaveOption) PURE; \
-	STDMETHOD(SetMoniker)(THIS_ DWORD dwWhichMoniker, IMoniker *pmk) PURE; \
-	STDMETHOD(GetMoniker)(THIS_ DWORD dwAssign, DWORD dwWhichMoniker, IMoniker **ppmk) PURE; \
-	STDMETHOD(InitFromData)(THIS_ IDataObject *pDataObject, BOOL fCreation, DWORD dwReserved) PURE; \
-	STDMETHOD(GetClipboardData)(THIS_ DWORD dwReserved, IDataObject **ppDataObject) PURE; \
-	STDMETHOD(DoVerb)(THIS_ LONG iVerb, struct tagMSG *lpmsg, IOleClientSite *pActiveSite, LONG lindex, HWND hwndParent, LPCRECT lprcPosRect) PURE; \
-	STDMETHOD(EnumVerbs)(THIS_ IEnumOLEVERB **ppEnumOleVerb) PURE; \
-	STDMETHOD(Update)(THIS) PURE; \
-	STDMETHOD(IsUpToDate)(THIS) PURE; \
-	STDMETHOD(GetUserClassID)(THIS_ CLSID *pClsid) PURE; \
-	STDMETHOD(GetUserType)(THIS_ DWORD dwFormOfType, LPOLESTR *pszUserType) PURE; \
-	STDMETHOD(SetExtent)(THIS_ DWORD dwDrawAspect, SIZEL *psizel) PURE; \
-	STDMETHOD(GetExtent)(THIS_ DWORD dwDrawAspect, SIZEL *psizel) PURE; \
-	STDMETHOD(Advise)(THIS_ IAdviseSink *pAdvSink, DWORD *pdwConnection) PURE; \
-	STDMETHOD(Unadvise)(THIS_ DWORD dwConnection) PURE; \
-	STDMETHOD(EnumAdvise)(THIS_ IEnumSTATDATA **ppenumAdvise) PURE; \
-	STDMETHOD(GetMiscStatus)(THIS_ DWORD dwAspect, DWORD *pdwStatus) PURE; \
-	STDMETHOD(SetColorScheme)(THIS_ struct tagLOGPALETTE *pLogpal) PURE;
-ICOM_DEFINE(IOleObject,IUnknown)
-#undef INTERFACE
-
-#ifdef COBJMACROS
-/*** IUnknown methods ***/
-#define IOleObject_QueryInterface(p,a,b)      (p)->lpVtbl->QueryInterface(p,a,b)
-#define IOleObject_AddRef(p)                  (p)->lpVtbl->AddRef(p)
-#define IOleObject_Release(p)                 (p)->lpVtbl->Release(p)
-/*** IOleObject methods ***/
-#define IOleObject_SetClientSite(p,a)       (p)->lpVtbl->SetClientSite(p,a)
-#define IOleObject_GetClientSite(p,a,b)     (p)->lpVtbl->GetClientSite(p,a)
-#define IOleObject_SetHostNames(p,a,b)      (p)->lpVtbl->SetHostNames(p,a,b)
-#define IOleObject_Close(p,a,b)             (p)->lpVtbl->Close(p,a)
-#define IOleObject_SetMoniker(p,a,b)        (p)->lpVtbl->SetMoniker(p,a,b)
-#define IOleObject_GetMoniker(p,a,b)        (p)->lpVtbl->GetMoniker(p,a,b,c)
-#define IOleObject_InitFromData(p,a,b)      (p)->lpVtbl->InitFromData(p,a,b,c)
-#define IOleObject_GetClipboardData(p,a,b)  (p)->lpVtbl->GetClipboardData(p,a,b)
-#define IOleObject_DoVerb(p,a,b)            (p)->lpVtbl->DoVerb(p,a,b,c,d,e,f)
-#define IOleObject_EnumVerbs(p,a,b)         (p)->lpVtbl->EnumVerbs(p,a)
-#define IOleObject_Update(p,a,b)            (p)->lpVtbl->Update(p)
-#define IOleObject_IsUpToDate(p,a,b)        (p)->lpVtbl->IsUpToDate(p)
-#define IOleObject_GetUserClassID(p,a,b)    (p)->lpVtbl->GetUserClassID(p,a)
-#define IOleObject_GetUserType(p,a,b)       (p)->lpVtbl->GetUserType(p,a,b)
-#define IOleObject_SetExtent(p,a,b)         (p)->lpVtbl->SetExtent(p,a,b)
-#define IOleObject_GetExtent(p,a,b)         (p)->lpVtbl->GetExtent(p,a,b)
-#define IOleObject_Advise(p,a,b)            (p)->lpVtbl->Advise(p,a,b)
-#define IOleObject_Unadvise(p,a,b)          (p)->lpVtbl->Unadvise(p,a)
-#define IOleObject_EnumAdvise(p,a,b)        (p)->lpVtbl->EnumAdvise(p,a)
-#define IOleObject_GetMiscStatus(p,a,b)     (p)->lpVtbl->GetMiscStatus(p,a,b)
-#define IOleObject_SetColorScheme(p,a,b)    (p)->lpVtbl->SetColorScheme(p,a)
-#endif
-
-
-/*****************************************************************************
- * IOleAdviseHolder interface
- */
-#define INTERFACE IOleAdviseHolder
-#define IOleAdviseHolder_METHODS \
-	IUnknown_METHODS \
-	STDMETHOD(Advise)(THIS_ IAdviseSink *pAdvise, DWORD *pdwConnection) PURE; \
-	STDMETHOD(Unadvise)(THIS_ DWORD dwConnection) PURE; \
-	STDMETHOD(EnumAdvise)(THIS_ IEnumSTATDATA **ppenumAdvise) PURE; \
-	STDMETHOD(SendOnRename)(THIS_ IMoniker *pmk) PURE; \
-	STDMETHOD(SendOnSave)(THIS) PURE; \
-	STDMETHOD(SendOnClose)(THIS) PURE;
-ICOM_DEFINE(IOleAdviseHolder,IUnknown)
-#undef INTERFACE
-
-#ifdef COBJMACROS
-/*** IUnknown methods ***/
-#define IOleAdviseHolder_QueryInterface(p,a,b)      (p)->lpVtbl->QueryInterface(p,a,b)
-#define IOleAdviseHolder_AddRef(p)                  (p)->lpVtbl->AddRef(p)
-#define IOleAdviseHolder_Release(p)                 (p)->lpVtbl->Release(p)
-/*** IOleAdviseHolder methods ***/
-#define IOleAdviseHolder_Advise(p,a,b)              (p)->lpVtbl->Advise(p,a,b)
-#define IOleAdviseHolder_Unadvise(p,a)              (p)->lpVtbl->Unadvise(p,a)
-#define IOleAdviseHolder_EnumAdvise(p,a)            (p)->lpVtbl->EnumAdvise(p,a)
-#define IOleAdviseHolder_SendOnRename(p,a)          (p)->lpVtbl->SendOnRename(p,a)
-#define IOleAdviseHolder_SendOnSave(p)              (p)->lpVtbl->SendOnSave(p)
-#define IOleAdviseHolder_SendOnClose(p)             (p)->lpVtbl->SendOnClose(p)
-#endif
-
-
-/*****************************************************************************
- *  IEnumOLEVERB interface
- */
-#define INTERFACE IEnumOLEVERB
-#define IEnumOLEVERB_METHODS \
-	IUnknown_METHODS \
-	STDMETHOD(Next)(THIS_ ULONG celt, LPOLEVERB rgelt, ULONG *pceltFetched) PURE; \
-	STDMETHOD(Skip)(THIS_ ULONG celt) PURE; \
-	STDMETHOD(Reset)(THIS) PURE; \
-	STDMETHOD(Clone)(THIS_ IEnumOLEVERB **ppenum) PURE;
-ICOM_DEFINE(IEnumOLEVERB,IUnknown)
-#undef INTERFACE
-
-#ifdef COBJMACROS
-/*** IUnknown methods ***/
-#define IEnumOLEVERB_QueryInterface(p,a,b)  (p)->lpVtbl->QueryInterface(p,a,b)
-#define IEnumOLEVERB_AddRef(p)              (p)->lpVtbl->AddRef(p)
-#define IEnumOLEVERB_Release(p)             (p)->lpVtbl->Release(p)
-/*** IEnumOLEVERB methods ***/
-#define IEnumOLEVERB_Next(p,a,b,c)          (p)->lpVtbl->Next(p,a,b,c)
-#define IEnumOLEVERB_Skip(p,a)              (p)->lpVtbl->Skip(p,a)
-#define IEnumOLEVERB_Reset(p,a)             (p)->lpVtbl->Reset(p)
-#define IEnumOLEVERB_Clone(p,a)             (p)->lpVtbl->Clone(p,a)
-#endif
-
-#ifdef __cplusplus
-} /* extern "C" */
-#endif /* defined(__cplusplus) */
-
-#endif /* __WINE_WINE_OBJ_OLEOBJ_H */
diff --git a/include/wine/obj_oleview.h b/include/wine/obj_oleview.h
deleted file mode 100644
index 2b3474e..0000000
--- a/include/wine/obj_oleview.h
+++ /dev/null
@@ -1,108 +0,0 @@
-/*
- * Defines the COM interfaces and APIs related to ViewObject
- *
- * Copyright (C) 1999 Paul Quinn
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- */
-
-#ifndef __WINE_WINE_OBJ_OLEVIEW_H
-#define __WINE_WINE_OBJ_OLEVIEW_H
-
-struct tagLOGPALETTE;
-
-#ifdef __cplusplus
-extern "C" {
-#endif /* defined(__cplusplus) */
-
-/*****************************************************************************
- * Declare the structures
- */
-
-
-/*****************************************************************************
- * Predeclare the interfaces
- */
-
-DEFINE_OLEGUID(IID_IViewObject,  0x0000010dL, 0, 0);
-typedef struct IViewObject IViewObject, *LPVIEWOBJECT;
-
-DEFINE_OLEGUID(IID_IViewObject2,  0x00000127L, 0, 0);
-typedef struct IViewObject2 IViewObject2, *LPVIEWOBJECT2;
-
-/*****************************************************************************
- * IViewObject interface
- */
-typedef BOOL    (CALLBACK *IVO_ContCallback)(DWORD);
-
-#define INTERFACE IViewObject
-#define IViewObject_METHODS \
-	IUnknown_METHODS \
-	STDMETHOD(Draw)(THIS_ DWORD dwDrawAspect, LONG lindex, void *pvAspect, DVTARGETDEVICE *ptd, HDC hdcTargetDev, HDC hdcDraw, LPCRECTL lprcBounds, LPCRECTL lprcWBounds, IVO_ContCallback  pfnContinue, DWORD dwContinue) PURE; \
-	STDMETHOD(GetColorSet)(THIS_ DWORD dwDrawAspect, LONG lindex, void *pvAspect, DVTARGETDEVICE *ptd, HDC hicTargetDevice, struct tagLOGPALETTE **ppColorSet) PURE; \
-	STDMETHOD(Freeze)(THIS_ DWORD dwDrawAspect, LONG lindex, void *pvAspect, DWORD *pdwFreeze) PURE; \
-	STDMETHOD(Unfreeze)(THIS_ DWORD dwFreeze) PURE; \
-	STDMETHOD(SetAdvise)(THIS_ DWORD aspects, DWORD advf, IAdviseSink *pAdvSink) PURE; \
-	STDMETHOD(GetAdvise)(THIS_ DWORD *pAspects, DWORD *pAdvf, IAdviseSink **ppAdvSink) PURE;
-ICOM_DEFINE(IViewObject,IUnknown)
-#undef INTERFACE
-
-#ifdef COBJMACROS
-/*** IUnknown methods ***/
-#define IViewObject_QueryInterface(p,a,b)        (p)->lpVtbl->QueryInterface(p,a,b)
-#define IViewObject_AddRef(p)                    (p)->lpVtbl->AddRef(p)
-#define IViewObject_Release(p)                   (p)->lpVtbl->Release(p)
-/*** IViewObject methods ***/
-#define IViewObject_Draw(p,a,b,c,d,e,f,g,h,i,j)  (p)->lpVtbl->Draw(p,a,b,c,d,e,f,g,h,i,j)
-#define IViewObject_GetColorSet(p,a,b,c,d,e,f)   (p)->lpVtbl->GetColorSet(p,a,b,c,d,e,f)
-#define IViewObject_Freeze(p,a,b,c,d)            (p)->lpVtbl->Freeze(p,a,b,c,d)
-#define IViewObject_Unfreeze(p,a)                (p)->lpVtbl->Unfreeze(p,a)
-#define IViewObject_SetAdvise(p,a,b,c)           (p)->lpVtbl->SetAdvise(p,a,b,c)
-#define IViewObject_GetAdvise(p,a,b,c)           (p)->lpVtbl->GetAdvise(p,a,b,c)
-#endif
-
-
-
-/*****************************************************************************
- * IViewObject2 interface
- */
-#define INTERFACE IViewObject2
-#define IViewObject2_METHODS \
-	IViewObject_METHODS \
-	STDMETHOD(GetExtent)(THIS_ DWORD dwDrawAspect, LONG lindex, DVTARGETDEVICE *ptd, LPSIZEL lpsizel) PURE;
-ICOM_DEFINE(IViewObject2,IViewObject)
-#undef INTERFACE
-
-#ifdef COBJMACROS
-/*** IUnknown methods ***/
-#define IViewObject2_QueryInterface(p,a,b)        (p)->lpVtbl->QueryInterface(p,a,b)
-#define IViewObject2_AddRef(p)                    (p)->lpVtbl->AddRef(p)
-#define IViewObject2_Release(p)                   (p)->lpVtbl->Release(p)
-/*** IViewObject methods ***/
-#define IViewObject2_Draw(p,a,b,c,d,e,f,g,h,i,j)  (p)->lpVtbl->Draw(p,a,b,c,d,e,f,g,h,i,j)
-#define IViewObject2_GetColorSet(p,a,b,c,d,e,f)   (p)->lpVtbl->GetColorSet(p,a,b,c,d,e,f)
-#define IViewObject2_Freeze(p,a,b,c,d)            (p)->lpVtbl->Freeze(p,a,b,c,d)
-#define IViewObject2_Unfreeze(p,a)                (p)->lpVtbl->Unfreeze(p,a)
-#define IViewObject2_SetAdvise(p,a,b,c)           (p)->lpVtbl->SetAdvise(p,a,b,c)
-#define IViewObject2_GetAdvise(p,a,b,c)           (p)->lpVtbl->GetAdvise(p,a,b,c)
-/*** IViewObject2 methods ***/
-#define IViewObject2_GetExtent(p,a,b,c,d)         (p)->lpVtbl->GetExtent(p,a,b,c,d)
-#endif
-
-#ifdef __cplusplus
-} /* extern "C" */
-#endif /* defined(__cplusplus) */
-
-#endif /* __WINE_WINE_OBJ_OLEVIEW_H */