diff --git a/include/ocidl.h b/include/ocidl.h
index f8c9c2390d1252f5425e8a90a9b1b78f42fff2ed..8691143a288e607021c63a63e3eb5e5a366c3eb4 100644
--- a/include/ocidl.h
+++ b/include/ocidl.h
@@ -7,6 +7,8 @@
 /* the following depend only on obj_base.h */
 #include "wine/obj_olefont.h"
 
+#include "wine/obj_control.h"
+#include "wine/obj_connection.h"
 
 #endif /* __WINE_OCIDL_H */
 
diff --git a/include/ole2.h b/include/ole2.h
index 4c9b03e016f3a9a347d381eba9bbb0480a849723..17541304b44e39726d1d506fe8829d8956ea9271 100644
--- a/include/ole2.h
+++ b/include/ole2.h
@@ -6,23 +6,13 @@
 #define __WINE_OLE2_H
 
 #include "wintypes.h"
+#include "winerror.h"
 #include "oleidl.h"
 
 /* OLE version */
 #define rmm             23
 #define rup            639
 
-/* FIXME: should be in oleidl.h */
-typedef struct  tagOleMenuGroupWidths
-{ LONG width[ 6 ];
-} OLEMENUGROUPWIDTHS32, OLEMENUGROUPWIDTHS;
-
-typedef struct tagOleMenuGroupWidths *LPOLEMENUGROUPWIDTHS32;
-typedef struct IOleInPlaceFrame        *LPOLEINPLACEFRAME;
-typedef struct IOleInPlaceActiveObject *LPOLEINPLACEACTIVEOBJECT;
-
-typedef HGLOBAL32 HOLEMENU32;
-
 /*
  * API declarations
  */
@@ -32,14 +22,8 @@ HRESULT     WINAPI RegisterDragDrop32(HWND32,LPDROPTARGET);
 HRESULT     WINAPI RevokeDragDrop16(HWND16);
 HRESULT     WINAPI RevokeDragDrop32(HWND32);
 #define     RevokeDragDrop WINELIB_NAME(RevokeDragDrop)
-HRESULT     WINAPI DoDragDrop16(LPDATAOBJECT, 
-                                LPDROPSOURCE,
-				DWORD,
-				DWORD*);
-HRESULT     WINAPI DoDragDrop32(LPDATAOBJECT,
-				LPDROPSOURCE,
-				DWORD,
-				DWORD*);
+HRESULT     WINAPI DoDragDrop16(LPDATAOBJECT,LPDROPSOURCE,DWORD,DWORD*);
+HRESULT     WINAPI DoDragDrop32(LPDATAOBJECT,LPDROPSOURCE,DWORD,DWORD*);
 #define     DoDragDrop WINELIB_NAME(DoDragDrop)
 
 HOLEMENU32  WINAPI OleCreateMenuDescriptor(HMENU32              hmenuCombined,
diff --git a/include/oleidl.h b/include/oleidl.h
index b515b9384e81fb9bded332626e434e101a064711..84359fe69c93cd371a03da2ed648c2216c73bf26 100644
--- a/include/oleidl.h
+++ b/include/oleidl.h
@@ -16,6 +16,8 @@
 /* the following depend on obj_dataobject.h */
 #include "wine/obj_dragdrop.h"
 
+#include "wine/obj_inplace.h"
+#include "wine/obj_cache.h"
 
 #endif /* __WINE_OLEIDL_H */
 
diff --git a/include/wine/obj_cache.h b/include/wine/obj_cache.h
new file mode 100644
index 0000000000000000000000000000000000000000..63e46f3c0e70ccc7ca072deaa60ffe9f8da02033
--- /dev/null
+++ b/include/wine/obj_cache.h
@@ -0,0 +1,119 @@
+/*
+ * Defines the COM interfaces and APIs related to structured data storage.
+ *
+ * Depends on 'obj_base.h'.
+ */
+
+#ifndef __WINE_WINE_OBJ_CACHE_H
+#define __WINE_WINE_OBJ_CACHE_H
+
+
+#include "winbase.h"
+
+
+/*****************************************************************************
+ * 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 ICOM_INTERFACE IOleCache
+#define IOleCache_METHODS \
+	ICOM_METHOD3(HRESULT,Cache, FORMATETC32*,pformatetc, DWORD,advf, DWORD*, pdwConnection); \
+	ICOM_METHOD1(HRESULT,Uncache, DWORD,dwConnection); \
+	ICOM_METHOD1(HRESULT,EnumCache, IEnumSTATDATA**,ppenumSTATDATA); \
+	ICOM_METHOD1(HRESULT,InitCache, IDataObject*,pDataObject); \
+	ICOM_METHOD3(HRESULT,SetData, FORMATETC32*,pformatetc, STGMEDIUM32*,pmedium, BOOL32,fRelease);
+#define IOleCache_IMETHODS \
+	IUnknown_IMETHODS \
+	IOleCache_METHODS
+ICOM_DEFINE(IOleCache,IUnknown)
+#undef ICOM_INTERFACE
+
+#ifdef ICOM_CINTERFACE
+/*** IUnknwon methods ***/
+#define IOleCache_QueryInterface(p,a,b)      ICOM_CALL2(QueryInterface,p,a,b)
+#define IOleCache_AddRef(p)                  ICOM_CALL (AddRef,p)
+#define IOleCache_Release(p)                 ICOM_CALL (Release,p)
+/*** IOleCache methods ***/
+#define IOleCache_Cache(p,a,b,c)             ICOM_CALL3(Cache,p,a,b,c)
+#define IOleCache_Uncache(p,a)               ICOM_CALL1(Uncache,p,a)
+#define IOleCache_EnumCache(p,a)             ICOM_CALL1(EnumCache,p,a)
+#define IOleCache_InitCache(p,a)             ICOM_CALL1(InitCache,p,a)
+#define IOleCache_SetData(p,a,b,c)           ICOM_CALL3(SetData,p,a,b,c)
+#endif
+				 
+
+/*****************************************************************************
+ * IOleCache2 interface
+ */
+#define ICOM_INTERFACE IOleCache2
+#define IOleCache2_METHODS \
+	ICOM_METHOD3(HRESULT,UpdateCache, LPDATAOBJECT,pDataObject, DWORD,grfUpdf, LPVOID,pReserved); \
+	ICOM_METHOD1(HRESULT,DiscardCache, DWORD,dwDiscardOptions);
+#define IOleCache2_IMETHODS \
+	IOleCache_IMETHODS \
+	IOleCache2_METHODS
+ICOM_DEFINE(IOleCache2,IOleCache)
+#undef ICOM_INTERFACE
+
+#ifdef ICOM_CINTERFACE
+/*** IUnknwon methods ***/
+#define IOleCache2_QueryInterface(p,a,b)      ICOM_CALL2(QueryInterface,p,a,b)
+#define IOleCache2_AddRef(p)                  ICOM_CALL (AddRef,p)
+#define IOleCache2_Release(p)                 ICOM_CALL (Release,p)
+/*** IOleCache methods ***/
+#define IOleCache2_Cache(p,a,b,c)             ICOM_CALL3(Cache,p,a,b,c)
+#define IOleCache2_Uncache(p,a)               ICOM_CALL1(Uncache,p,a)
+#define IOleCache2_EnumCache(p,a)             ICOM_CALL1(EnumCache,p,a)
+#define IOleCache2_InitCache(p,a)             ICOM_CALL1(InitCache,p,a)
+#define IOleCache2_SetData(p,a,b,c)           ICOM_CALL3(SetData,p,a,b,c)
+/*** IOleCache2 methods ***/
+#define IOleCache2_UpdateCache(p,a,b,c)       ICOM_CALL3(UpdateCache,p,a,b,c)
+#define IOleCache2_DiscardCache(p,a)          ICOM_CALL1(DiscardCache,p,a)
+#endif
+
+
+/*****************************************************************************
+ * IOleCacheControl interface
+ */
+#define ICOM_INTERFACE IOleCacheControl
+#define IOleCacheControl_METHODS \
+	ICOM_METHOD1(HRESULT,OnRun, LPDATAOBJECT,pDataObject); \
+	ICOM_METHOD (HRESULT,OnStop);
+#define IOleCacheControl_IMETHODS \
+	IUnknown_IMETHODS \
+	IOleCacheControl_METHODS
+ICOM_DEFINE(IOleCacheControl,IUnknown)
+#undef ICOM_INTERFACE
+
+#ifdef ICOM_CINTERFACE
+/*** IUnknwon methods ***/
+#define IOleCacheControl_QueryInterface(p,a,b)      ICOM_CALL2(QueryInterface,p,a,b)
+#define IOleCacheControl_AddRef(p)                  ICOM_CALL (AddRef,p)
+#define IOleCacheControl_Release(p)                 ICOM_CALL (Release,p)
+/*** IOleCacheControl methods ***/
+#define IOleCacheControl_OnRun(p,a)                 ICOM_CALL1(UpdateCache,p,a)
+#define IOleCacheControl_OnStop(p)                  ICOM_CALL (OnStop,p)
+#endif
+				 
+
+
+#endif /* __WINE_WINE_OBJ_CONTROL_H */
+
+
diff --git a/include/wine/obj_connection.h b/include/wine/obj_connection.h
new file mode 100644
index 0000000000000000000000000000000000000000..1a1a83dae641b952f687a012691ddf6369f90f86
--- /dev/null
+++ b/include/wine/obj_connection.h
@@ -0,0 +1,152 @@
+/*
+ * Defines the COM interfaces and APIs related to structured data storage.
+ *
+ * Depends on 'obj_base.h'.
+ */
+
+#ifndef __WINE_WINE_OBJ_CONNECTION_H
+#define __WINE_WINE_OBJ_CONNECTION_H
+
+
+#include "winbase.h"
+
+
+/*****************************************************************************
+ * Declare the structures
+ */
+
+typedef struct tagCONNECTDATA
+{
+				  IUnknown *pUnk;
+					  DWORD dwCookie;
+} CONNECTDATA, *LPCONNECTDATA;
+ 
+/*****************************************************************************
+ * Predeclare the interfaces
+ */
+DEFINE_GUID(IID_IConnectionPoint, 0xb196b286, 0xbab4, 0x101a, 0xb6, 0x9c, 0x00, 0xaa, 0x00, 0x34, 0x1d, 0x07);
+typedef struct IConnectionPoint IConnectionPoint, *LPCONNECTIONPOINT;
+
+DEFINE_GUID(IID_IConnectionPointContainer, 0xb196b284, 0xbab4, 0x101a, 0xb6, 0x9c, 0x00, 0xaa, 0x00, 0x34, 0x1d, 0x07);
+typedef struct IConnectionPointContainer IConnectionPointContainer, *LPCONNECTIONPOINTCONTAINER;
+
+DEFINE_GUID(IID_IEnumConnections, 0xb196b287, 0xbab4, 0x101a, 0xb6, 0x9c, 0x00, 0xaa, 0x00, 0x34, 0x1d, 0x07);
+typedef struct IEnumConnections IEnumConnections, *LPENUMCONNECTIONS;
+
+DEFINE_GUID(IID_IEnumConnectionPoints, 0xb196b285, 0xbab4, 0x101a, 0xb6, 0x9c, 0x00, 0xaa, 0x00, 0x34, 0x1d, 0x07);
+typedef struct IEnumConnectionPoints IEnumConnectionPoints, *LPENUMCONNECTIONPOINTS;
+
+/*****************************************************************************
+ * IConnectionPoint interface
+ */
+#define ICOM_INTERFACE IConnectionPoint
+#define IConnectionPoint_METHODS \
+	ICOM_METHOD1(HRESULT,GetConnectionInterface, IID*,pIID); \
+	ICOM_METHOD1(HRESULT,GetConnectionPointContainer, IConnectionPointContainer**,ppCPC); \
+	ICOM_METHOD2(HRESULT,Advise, IUnknown*,pUnkSink, DWORD*,pdwCookie); \
+	ICOM_METHOD1(HRESULT,Unadvise, DWORD,dwCookie); \
+	ICOM_METHOD1(HRESULT,EnumConnections, IEnumConnections**,ppEnum);
+#define IConnectionPoint_IMETHODS \
+	IUnknown_IMETHODS \
+	IConnectionPoint_METHODS
+ICOM_DEFINE(IConnectionPoint,IUnknown)
+#undef ICOM_INTERFACE
+
+#ifdef ICOM_CINTERFACE
+/*** IUnknwon methods ***/
+#define IConnectionPoint_QueryInterface(p,a,b)      ICOM_CALL2(QueryInterface,p,a,b)
+#define IConnectionPoint_AddRef(p)                  ICOM_CALL (AddRef,p)
+#define IConnectionPoint_Release(p)                 ICOM_CALL (Release,p)
+/*** IConnectionPointContainer methods ***/
+#define IConnectionPoint_GetConnectionInterface(p,a)      ICOM_CALL1(GetConnectionInterface,p,a)
+#define IConnectionPoint_GetConnectionPointContainer(p,a) ICOM_CALL1(GetConnectionPointContainer,p,a)
+#define IConnectionPoint_Advise(p,a,b)                    ICOM_CALL2(Advise,p,a,b)
+#define IConnectionPoint_Unadvise(p,a)                    ICOM_CALL1(Unadvise,p,a)
+#define IConnectionPoint_EnumConnections(p,a)             ICOM_CALL1(EnumConnections,p,a)
+#endif
+
+
+/*****************************************************************************
+ * IConnectionPointContainer interface
+ */
+#define ICOM_INTERFACE IConnectionPointContainer
+#define IConnectionPointContainer_METHODS \
+	ICOM_METHOD1(HRESULT,EnumConnectionPoints, IEnumConnectionPoints**,ppEnum); \
+	ICOM_METHOD2(HRESULT,FindConnectionPoint, REFIID,riid, IConnectionPoint**,ppCP); 
+#define IConnectionPointContainer_IMETHODS \
+	IUnknown_IMETHODS \
+	IConnectionPointContainer_METHODS
+ICOM_DEFINE(IConnectionPointContainer,IUnknown)
+#undef ICOM_INTERFACE
+
+#ifdef ICOM_CINTERFACE
+/*** IUnknwon methods ***/
+#define IConnectionPointContainer_QueryInterface(p,a,b)      ICOM_CALL2(QueryInterface,p,a,b)
+#define IConnectionPointContainer_AddRef(p)                  ICOM_CALL (AddRef,p)
+#define IConnectionPointContainer_Release(p)                 ICOM_CALL (Release,p)
+/*** IConnectionPointContainer methods ***/
+#define IConnectionPointContainer_EnumConnectionPoints(p,a)  ICOM_CALL1(CreateInstance,p,a)
+#define IConnectionPointContainer_FindConnectionPoint(p,a,b) ICOM_CALL2(LockServer,p,a,b)
+#endif
+
+
+/*****************************************************************************
+ * IEnumConnections interface
+ */
+#define ICOM_INTERFACE IEnumConnections
+#define IEnumConnections_METHODS \
+	ICOM_METHOD3(HRESULT,Next, ULONG,cConnections, LPCONNECTDATA,rgcd, ULONG*,pcFectched); \
+	ICOM_METHOD1(HRESULT,Skip, ULONG,cConnections); \
+	ICOM_METHOD (HRESULT,Reset); \
+	ICOM_METHOD1(HRESULT,Clone, IEnumConnections**,ppEnum);
+#define IEnumConnections_IMETHODS \
+	IUnknown_IMETHODS \
+	IEnumConnections_METHODS
+ICOM_DEFINE(IEnumConnections,IUnknown)
+#undef ICOM_INTERFACE
+
+#ifdef ICOM_CINTERFACE
+/*** IUnknwon methods ***/
+#define IEnumConnections_QueryInterface(p,a,b)      ICOM_CALL2(QueryInterface,p,a,b)
+#define IEnumConnections_AddRef(p)                  ICOM_CALL (AddRef,p)
+#define IEnumConnections_Release(p)                 ICOM_CALL (Release,p)
+/*** IConnectionPointContainer methods ***/
+#define IEnumConnections_Next(p,a,b,c)              ICOM_CALL3(Next,p,a,b,c)
+#define IEnumConnections_Skip(p,a)                  ICOM_CALL1(Skip,p,a)
+#define IEnumConnections_Reset(p)                   ICOM_CALL (Reset,p)
+#define IEnumConnections_Clone(p,a)                 ICOM_CALL1(Clone,p,a)
+#endif
+
+/*****************************************************************************
+ * IEnumConnectionPoints interface
+ */
+#define ICOM_INTERFACE IEnumConnectionPoints
+#define IEnumConnectionPoints_METHODS \
+	ICOM_METHOD3(HRESULT,Next, ULONG,cConnections, LPCONNECTIONPOINT*,ppCP, ULONG*,pcFectched); \
+	ICOM_METHOD1(HRESULT,Skip, ULONG,cConnections); \
+	ICOM_METHOD (HRESULT,Reset); \
+	ICOM_METHOD1(HRESULT,Clone, IEnumConnections**,ppEnum);
+#define IEnumConnectionPoints_IMETHODS \
+	IUnknown_IMETHODS \
+	IEnumConnectionPoints_METHODS
+ICOM_DEFINE(IEnumConnectionPoints,IUnknown)
+#undef ICOM_INTERFACE
+
+#ifdef ICOM_CINTERFACE
+/*** IUnknwon methods ***/
+#define IEnumConnectionPoints_QueryInterface(p,a,b)      ICOM_CALL2(QueryInterface,p,a,b)
+#define IEnumConnectionPoints_AddRef(p)                  ICOM_CALL (AddRef,p)
+#define IEnumConnectionPoints_Release(p)                 ICOM_CALL (Release,p)
+/*** IConnectionPointContainer methods ***/
+#define IEnumConnectionPoints_Next(p,a,b,c)              ICOM_CALL3(Next,p,a,b,c)
+#define IEnumConnectionPoints_Skip(p,a)                  ICOM_CALL1(Skip,p,a)
+#define IEnumConnectionPoints_Reset(p)                   ICOM_CALL (Reset,p)
+#define IEnumConnectionPoints_Clone(p,a)                 ICOM_CALL1(Clone,p,a)
+#endif
+				
+
+
+
+#endif /* __WINE_WINE_OBJ_CONTROL_H */
+
+
diff --git a/include/wine/obj_control.h b/include/wine/obj_control.h
new file mode 100644
index 0000000000000000000000000000000000000000..9ed743561d2c6270db3d63067d1bc1104a31b388
--- /dev/null
+++ b/include/wine/obj_control.h
@@ -0,0 +1,319 @@
+/*
+ * Defines the COM interfaces and APIs related to structured data storage.
+ *
+ * Depends on 'obj_base.h'.
+ */
+
+#ifndef __WINE_WINE_OBJ_CONTROL_H
+#define __WINE_WINE_OBJ_CONTROL_H
+
+
+#include "winbase.h"
+
+
+/*****************************************************************************
+ * Declare the structures
+ */
+
+typedef struct tagVARIANT_BLOB
+{
+	DWORD clSize;
+	DWORD rpcReserved;
+	ULONGLONG ahData[1];
+} wireVARIANT_BLOB;
+
+typedef struct tagUserVARIANT
+{
+	wireVARIANT_BLOB pVarBlob;
+} UserVARIANT;
+
+typedef struct tagLICINFO
+{
+	LONG cbLicInfo;
+	BOOL32 fRuntimeKeyAvail;
+	BOOL32 fLicVerified;
+} LICINFO, *LPLICINFO;
+
+typedef struct tagCONTROLINFO
+{
+	ULONG cb;
+	HACCEL32 hAccel;
+	USHORT cAccel;
+	DWORD dwFlags;
+} CONTROLINFO, *LPCONTROLINFO;
+
+typedef enum tagCTRLINFO
+{
+	CTRLINFO_EATS_RETURN = 1,
+	CTRLINFO_EATS_ESCAPE = 2
+} CTRLINFO;
+
+typedef struct tagPOINTF
+{
+	FLOAT x;
+	FLOAT y;
+} POINTF, *LPPOINTF;
+
+typedef enum tagXFORMCOORDS
+{
+	XFORMCOORDS_POSITION = 0x1,
+	XFORMCOORDS_SIZE = 0x2,
+	XFORMCOORDS_HIMETRICTOCONTAINER = 0x4,
+	XFORMCOORDS_CONTAINERTOHIMETRIC = 0x8
+} XFORMCOORDS;
+
+typedef enum tagACTIVATEFLAGS
+{
+	ACTIVATE_WINDOWLESS = 1
+} ACTIVATE_FLAGS;
+
+typedef enum tagOLEDCFLAGS
+{
+	OLEDC_NODRAW = 0x1,
+	OLEDC_PAINTBKGND = 0x2,
+	OLEDC_OFFSCREEN = 0x4
+} OLEDCFLAGS;
+
+/*****************************************************************************
+ * Predeclare the interfaces
+ */
+DEFINE_GUID(IID_IOleControl, 0xb196b288, 0xbab4, 0x101a, 0xb6, 0x9c, 0x00, 0xaa, 0x00, 0x34, 0x1d, 0x07);
+typedef struct IOleControl IOleControl, *LPOLECONTROL;
+
+DEFINE_GUID(IID_IOleControlSite, 0xb196b289, 0xbab4, 0x101a, 0xb6, 0x9c, 0x00, 0xaa, 0x00, 0x34, 0x1d, 0x07);
+typedef struct IOleControlSite IOleControlSite, *LPOLECONTROLSITE;
+
+DEFINE_GUID(IID_IOleInPlaceSiteEx, 0x9c2cad80L, 0x3424, 0x11cf, 0xb6, 0x70, 0x00, 0xaa, 0x00, 0x4c, 0xd6, 0xd8);
+typedef struct IOleInPlaceSiteEx IOleInPlaceSiteEx, *LPOLEINPLACESITEEX;
+
+DEFINE_OLEGUID(IID_IOleInPlaceSiteWindowless,  0x00000000L, 0, 0); /* FIXME - NEED GUID */
+typedef struct IOleInPlaceSiteWindowless IOleInPlaceSiteWindowless, *LPOLEINPLACESITEWINDOWLESS;
+
+DEFINE_OLEGUID(IID_IOleInPlaceObjectWindowless,  0x00000000L, 0, 0); /* FIXME - NEED GUID */
+typedef struct IOleInPlaceObjectWindowless IOleInPlaceObjectWindowless, *LPOLEINPLACEOBJECTWINDOWLESS;
+
+DEFINE_GUID(IID_IClassFactory2, 0xb196b28f, 0xbab4, 0x101a, 0xb6, 0x9c, 0x00, 0xaa, 0x00, 0x34, 0x1d, 0x07);
+typedef struct IClassFactory2 IClassFactory2, *LPCLASSFACTORY2;
+
+/*****************************************************************************
+ * IOleControl interface
+ */
+#define ICOM_INTERFACE IOleControl
+#define IOleControl_METHODS \
+	ICOM_METHOD1(HRESULT,GetControlInfo, CONTROLINFO*,pCI); \
+	ICOM_METHOD1(HRESULT,OnMnemonic, MSG32*,pMsg); \
+	ICOM_METHOD1(HRESULT,OnAmbientPropertyChange, DISPID,dispID); \
+	ICOM_METHOD1(HRESULT,FreezeEvents, BOOL32,bFreeze);
+#define IOleControl_IMETHODS \
+	IUnknown_IMETHODS \
+	IOleControl_METHODS
+ICOM_DEFINE(IOleControl,IUnknown)
+#undef ICOM_INTERFACE
+
+#ifdef ICOM_CINTERFACE
+/*** IUnknwon methods ***/
+#define IOleControl_QueryInterface(p,a,b)        ICOM_CALL2(QueryInterface,p,a,b)
+#define IOleControl_AddRef(p)                    ICOM_CALL (AddRef,p)
+#define IOleControl_Release(p)                   ICOM_CALL (Release,p)
+/*** IOleControl methods ***/
+#define IOleControl_GetControlInfo(p,a)          ICOM_CALL1(GetControlInfo,p,a)
+#define IOleControl_OnMnemonic(p,a)              ICOM_CALL1(OnMnemonic,p,a)
+#define IOleControl_OnAmbientPropertyChange(p,a) ICOM_CALL1(OnAmbientPropertyChange,p,a)
+#define IOleControl_FreezeEvents(p,a)            ICOM_CALL1(FreezeEvents,p,a)
+#endif
+				
+
+/*****************************************************************************
+ * IOleControlSite interface
+ */
+#define ICOM_INTERFACE IOleControlSite 
+#define IOleControlSite_METHODS \
+	ICOM_METHOD (HRESULT,OnControlInfoChanged); \
+	ICOM_METHOD1(HRESULT,LockInPlaceActive, BOOL32,fLock); \
+	ICOM_METHOD3(HRESULT,TransformCoords, POINTL*,pPtlHimetric, POINTF*,pPtfContainer, DWORD,dwFlags); \
+	ICOM_METHOD2(HRESULT,TranslateAccelerator, MSG32*,pMsg, DWORD,grfModifiers) ;\
+	ICOM_METHOD1(HRESULT,OnFocus, BOOL32,fGotFocus); \
+	ICOM_METHOD (HRESULT,ShowPropertyFrame);
+#define IOleControlSite_IMETHODS \
+	IUnknown_IMETHODS \
+	IOleControlSite_METHODS
+ICOM_DEFINE(IOleControlSite,IUnknown)
+#undef ICOM_INTERFACE
+
+#ifdef ICOM_CINTERFACE
+/*** IUnknwon methods ***/
+#define IOleControlSite_QueryInterface(p,a,b)        ICOM_CALL2(QueryInterface,p,a,b)
+#define IOleControlSite_AddRef(p)                    ICOM_CALL (AddRef,p)
+#define IOleControlSite_Release(p)                   ICOM_CALL (Release,p)
+/*** IOleControlSite methods ***/
+#define IOleControlSite_OnControlInfoChanged(p)      ICOM_CALL1(OnControlInfoChanged,p)
+#define IOleControlSite_LockInPlaceActive(p,a)       ICOM_CALL1(LockInPlaceActive,p,a)
+#define IOleControlSite_TransformCoords(p,a,b,c)     ICOM_CALL1(TransformCoords,p,a,b,c)
+#define IOleControlSite_TranslateAccelerator(p,a,b)  ICOM_CALL1(TranslateAccelerator,p,a,b)
+#define IOleControlSite_OnFocus(p,a)                 ICOM_CALL1(OnFocus,p,a)
+#define IOleControlSite_ShowPropertyFrame(p)         ICOM_CALL1(ShowPropertyFrame,p)
+#endif
+				
+				
+/*****************************************************************************
+ * IOleInPlaceSiteEx interface
+ */
+#define ICOM_INTERFACE IOleInPlaceSiteEx
+#define IOleInPlaceSiteEx_METHODS \
+	ICOM_METHOD2(HRESULT,OnInPlaceActivateEx, BOOL32*,pfNoRedraw, DWORD,dwFlags); \
+	ICOM_METHOD1(HRESULT,OnInPlaceDeactivateEx, BOOL32,fNoRedraw); \
+	ICOM_METHOD (HRESULT,RequestUIActivate);
+#define IOleInPlaceSiteEx_IMETHODS \
+	IOleInPlaceSite_IMETHODS \
+	IOleInPlaceSiteEx_METHODS
+ICOM_DEFINE(IOleInPlaceSiteEx,IOleInPlaceSite)
+#undef ICOM_INTERFACE
+
+#ifdef ICOM_CINTERFACE
+/*** IUnknown methods ***/
+#define IOleInPlaceSiteEx_QueryInterface(p,a,b)      ICOM_CALL2(QueryInterface,p,a,b)
+#define IOleInPlaceSiteEx_AddRef(p)                  ICOM_CALL (AddRef,p)
+#define IOleInPlaceSiteEx_Release(p)                 ICOM_CALL (Release,p)
+/*** IOleWindow methods ***/
+#define IOleInPlaceSiteEx_GetWindow(p,a)             ICOM_CALL1(GetWindow,p,a)
+#define IOleInPlaceSiteEx_ContextSensitiveHelp(p,a)  ICOM_CALL1(ContextSensitiveHelp,p,a)
+/*** IOleInPlaceSite methods ***/
+#define IOleInPlaceSiteEx_CanInPlaceActivate(p)      ICOM_CALL (CanInPlaceActivate,p)
+#define IOleInPlaceSiteEx_OnInPlaceActivate(p)       ICOM_CALL (OnInPlaceActivate,p)
+#define IOleInPlaceSiteEx_OnUIActivate(p)            ICOM_CALL (OnUIActivate,p)
+#define IOleInPlaceSiteEx_GetWindowContext(p,a,b,c,d,e) ICOM_CALL5(GetWindowContext,p,a,b,c,d,e)
+#define IOleInPlaceSiteEx_Scroll(p,a)                ICOM_CALL1(Scroll,p,a)
+#define IOleInPlaceSiteEx_OnUIDeactivate(p,a)        ICOM_CALL1(OnUIDeactivate,p,a)
+#define IOleInPlaceSiteEx_OnInPlaceDeactivate(p)     ICOM_CALL (OnInPlaceDeactivate,p)
+#define IOleInPlaceSiteEx_DiscardUndoState(p)        ICOM_CALL (DiscardUndoState,p)
+#define IOleInPlaceSiteEx_DeactivateAndUndo(p)       ICOM_CALL (DeactivateAndUndo,p)
+#define IOleInPlaceSiteEx_OnPosRectChange(p,a)       ICOM_CALL1(OnPosRectChange,p,a)
+/*** IOleInPlaceSiteEx methods ***/
+#define IOleInPlaceSiteEx_OnInPlaceActivateEx(p,a,b) ICOM_CALL2(OnInPlaceActivateEx,p,a,b)
+#define IOleInPlaceSiteEx_OnInPlaceDeactivateEx(p,a) ICOM_CALL1(OnInPlaceDeactivateEx,p,a)
+#define IOleInPlaceSiteEx_RequestUIActivate(p)       ICOM_CALL (RequestUIActivate,p)
+#endif
+				 
+
+/*****************************************************************************
+ * IOleInPlaceSiteWindowless interface
+ */
+#define ICOM_INTERFACE IOleInPlaceSiteWindowless
+#define IOleInPlaceSiteWindowless_METHODS \
+	ICOM_METHOD (HRESULT,CanWindowlessActivate); \
+	ICOM_METHOD (HRESULT,GetCapture); \
+	ICOM_METHOD1(HRESULT,SetCapture, BOOL32,fCapture); \
+	ICOM_METHOD (HRESULT,GetFocus); \
+	ICOM_METHOD1(HRESULT,SetFocus, BOOL32,fFocus); \
+	ICOM_METHOD3(HRESULT,GetDC, LPCRECT32,pRect, DWORD,grfFlags, HDC32*,phDC); \
+	ICOM_METHOD1(HRESULT,ReleaseDC, HDC32,hDC); \
+	ICOM_METHOD2(HRESULT,InvalidateRect, LPCRECT32,pRect, BOOL32,fErase); \
+	ICOM_METHOD2(HRESULT,InvalidateRgn, HRGN32,hRgn, BOOL32,fErase); \
+	ICOM_METHOD4(HRESULT,ScrollRect, INT32,dx, INT32,dy, LPCRECT32,pRectScroll, LPCRECT32,pRectClip); \
+	ICOM_METHOD1(HRESULT,AdjustRect, LPRECT32,prc); \
+	ICOM_METHOD4(HRESULT,OnDefWindowMessage, UINT32,msg, WPARAM32,wParam, LPARAM,lParam, LRESULT*,plResult);
+#define IOleInPlaceSiteWindowless_IMETHODS \
+	IOleInPlaceSite_IMETHODS \
+	IOleInPlaceSiteWindowless_METHODS
+ICOM_DEFINE(IOleInPlaceSiteWindowless,IOleInPlaceSite)
+#undef ICOM_INTERFACE
+
+#ifdef ICOM_CINTERFACE
+/*** IUnknown methods ***/
+#define IOleInPlaceSiteWindowless_QueryInterface(p,a,b)      ICOM_CALL2(QueryInterface,p,a,b)
+#define IOleInPlaceSiteWindowless_AddRef(p)                  ICOM_CALL (AddRef,p)
+#define IOleInPlaceSiteWindowless_Release(p)                 ICOM_CALL (Release,p)
+/*** IOleWindow methods ***/
+#define IOleInPlaceSiteWindowless_GetWindow(p,a)             ICOM_CALL1(GetWindow,p,a)
+#define IOleInPlaceSiteWindowless_ContextSensitiveHelp(p,a)  ICOM_CALL1(ContextSensitiveHelp,p,a)
+/*** IOleInPlaceSitemethods ***/
+#define IOleInPlaceSiteWindowless_CanInPlaceActivate(p)      ICOM_CALL (CanInPlaceActivate,p)
+#define IOleInPlaceSiteWindowless_OnInPlaceActivate(p)       ICOM_CALL (OnInPlaceActivate,p)
+#define IOleInPlaceSiteWindowless_OnUIActivate(p)            ICOM_CALL (OnUIActivate,p)
+#define IOleInPlaceSiteWindowless_GetWindowContext(p,a,b,c,d,e) ICOM_CALL5(GetWindowContext,p,a,b,c,d,e)
+#define IOleInPlaceSiteWindowless_Scroll(p,a)                ICOM_CALL1(Scroll,p,a)
+#define IOleInPlaceSiteWindowless_OnUIDeactivate(p,a)        ICOM_CALL1(OnUIDeactivate,p,a)
+#define IOleInPlaceSiteWindowless_OnInPlaceDeactivate(p)     ICOM_CALL (OnInPlaceDeactivate,p)
+#define IOleInPlaceSiteWindowless_DiscardUndoState(p)        ICOM_CALL (DiscardUndoState,p)
+#define IOleInPlaceSiteWindowless_DeactivateAndUndo(p)       ICOM_CALL (DeactivateAndUndo,p)
+#define IOleInPlaceSiteWindowless_OnPosRectChange(p,a)       ICOM_CALL1(OnPosRectChange,p,a)
+/*** IOleInPlaceSitemethods ***/
+#define IOleInPlaceSiteWindowless_CanWindowlessActivate(p) ICOM_CALL (CanInPlaceActivate,p)
+#define IOleInPlaceSiteWindowless_GetCapture(p)            ICOM_CALL (OnInPlaceActivate,p)
+#define IOleInPlaceSiteWindowless_SetCapture(p,a)          ICOM_CALL1(OnUIActivate,p,a)
+#define IOleInPlaceSiteWindowless_GetFocus(p)              ICOM_CALL (GetWindowContext,p)
+#define IOleInPlaceSiteWindowless_SetFocus(p,a)            ICOM_CALL1(Scroll,p,a)
+#define IOleInPlaceSiteWindowless_GetDC(p,a,b,c)           ICOM_CALL3(OnUIDeactivate,p,a,b,c)
+#define IOleInPlaceSiteWindowless_ReleaseDC(p,a)           ICOM_CALL1(OnInPlaceDeactivate,p,a)
+#define IOleInPlaceSiteWindowless_InvalidateRect(p,a,b)    ICOM_CALL2(DiscardUndoState,p,a,b)
+#define IOleInPlaceSiteWindowless_InvalidateRgn(p,a,b)     ICOM_CALL2(DeactivateAndUndo,p,a,b)
+#define IOleInPlaceSiteWindowless_ScrollRect(p,a,b,c,d)    ICOM_CALL4(OnPosRectChange,p,a,b,c,d)
+#define IOleInPlaceSiteWindowless_AdjustRect(p,a)          ICOM_CALL1(OnPosRectChange,p,a)
+#define IOleInPlaceSiteWindowless_OnDefWindowMessage(p,a,b,c,d) ICOM_CALL4(OnPosRectChange,p,a,b,c,d)
+#endif
+
+
+/*****************************************************************************
+ * IOleInPlaceObjectWindowless interface
+ */
+#define ICOM_INTERFACE IOleInPlaceObjectWindowless
+#define IOleInPlaceObjectWindowless_METHODS \
+	ICOM_METHOD4(HRESULT,OnWindowMessage, UINT32,msg, WPARAM32,wParam, LPARAM,lParam, LRESULT*,plResult); \
+	ICOM_METHOD1(HRESULT,GetDropTarget, IDropTarget**,ppDropTarget);
+#define IOleInPlaceObjectWindowless_IMETHODS \
+	IOleInPlaceObject_IMETHODS \
+	IOleInPlaceObjectWindowless_METHODS
+ICOM_DEFINE(IOleInPlaceObjectWindowless,IOleInPlaceObject)
+#undef ICOM_INTERFACE
+
+#ifdef ICOM_CINTERFACE
+/*** IUnknown methods ***/
+#define IOleInPlaceObjectWindowless_QueryInterface(p,a,b) ICOM_CALL2(QueryInterface,p,a,b)
+#define IOleInPlaceObjectWindowless_AddRef(p)             ICOM_CALL (AddRef,p)
+#define IOleInPlaceObjectWindowless_Release(p)            ICOM_CALL (Release,p)
+/*** IOleWindow methods ***/
+#define IOleInPlaceObjectWindowless_GetWindow(p,a)             ICOM_CALL1(GetWindow,p,a)
+#define IOleInPlaceObjectWindowless_ContextSensitiveHelp(p,a)  ICOM_CALL1(ContextSensitiveHelp,p,a)
+/*** IOleInPlaceObject methods ***/
+#define IOleInPlaceObjectWindowless_InPlaceDeactivate(p)       ICOM_CALL (InPlaceDeactivate,p)
+#define IOleInPlaceObjectWindowless_UIDeactivate(p)            ICOM_CALL (UIDeactivate,p)
+#define IOleInPlaceObjectWindowless_SetObjectRects(p,a,b)      ICOM_CALL2(SetObjectRects,p,a,b)
+#define IOleInPlaceObjectWindowless_ReactivateAndUndo(p)       ICOM_CALL (ReactivateAndUndo,p)
+/*** IOleInPlaceObjectWindowless methods ***/
+#define IOleInPlaceObjectWindowless_OnWindowMessage(p,a,b,c,d) ICOM_CALL4(OnWindowMessage,p,a,b,c,d)
+#define IOleInPlaceObjectWindowless_GetDropTarget(p,a)         ICOM_CALL1(GetDropTarget,p,a)
+#endif
+				 
+
+/*****************************************************************************
+ * IClassFactory2 interface
+ */
+#define ICOM_INTERFACE IClassFactory2
+#define IClassFactory2_METHODS \
+	ICOM_METHOD1(HRESULT,GetLicInfo, LICINFO*,pLicInfo); \
+	ICOM_METHOD2(HRESULT,RequestLicKey, DWORD,dwReserved, BSTR32*,pBstrKey); \
+	ICOM_METHOD5(HRESULT,CreateInstanceLic, IUnknown*,pUnkOuter, IUnknown*,pUnkReserved, REFIID,riid, BSTR32,bstrKey, PVOID*,ppvObj);
+#define IClassFactory2_IMETHODS \
+	IClassFactory_IMETHODS \
+	IClassFactory2_METHODS
+ICOM_DEFINE(IClassFactory2,IClassFactory)
+#undef ICOM_INTERFACE
+
+#ifdef ICOM_CINTERFACE
+/*** IUnknwon methods ***/
+#define IClassFactory2_QueryInterface(p,a,b)      ICOM_CALL2(QueryInterface,p,a,b)
+#define IClassFactory2_AddRef(p)                  ICOM_CALL (AddRef,p)
+#define IClassFactory2_Release(p)                 ICOM_CALL (Release,p)
+/*** IClassFactory methods ***/
+#define IClassFactory2_CreateInstance(p,a,b,c)    ICOM_CALL3(CreateInstance,p,a,b,c)
+#define IClassFactory2_LockServer(p,a)            ICOM_CALL1(LockServer,p,a)
+/*** IClassFactory2 methods ***/
+#define IClassFactory2_GetLicInfo(p,a)            ICOM_CALL1(GetLicInfo,p,a)
+#define IClassFactory2_RequestLicKey(p,a,b)       ICOM_CALL2(RequestLicKey,p,a,b)
+#define IClassFactory2_CreateInstanceLic(p,a,b,c,d,e) ICOM_CALL5(CreateInstanceLic,p,a,b,c,d,e)
+#endif
+
+
+#endif /* __WINE_WINE_OBJ_CONTROL_H */
+
+
diff --git a/include/wine/obj_inplace.h b/include/wine/obj_inplace.h
new file mode 100644
index 0000000000000000000000000000000000000000..4e5e657a9e6bdaa730b233400605d8d0ae82aca6
--- /dev/null
+++ b/include/wine/obj_inplace.h
@@ -0,0 +1,425 @@
+/*
+ * Defines the COM interfaces and APIs related to structured data storage.
+ * 
+ * Depends on 'obj_base.h'.
+ */
+
+#ifndef __WINE_WINE_OBJ_INPLACE_H
+#define __WINE_WINE_OBJ_INPLACE_H
+
+
+#include "winbase.h"
+#include "winuser.h"
+
+/*****************************************************************************
+ * Predeclare the structures
+ */
+typedef struct  tagOleMenuGroupWidths
+{
+	LONG width[ 6 ];
+} OLEMENUGROUPWIDTHS32, *LPOLEMENUGROUPWIDTHS32;
+
+DECL_WINELIB_TYPE(OLEMENUGROUPWIDTHS)
+DECL_WINELIB_TYPE(LPOLEMENUGROUPWIDTHS)
+
+typedef struct tagOleInPlaceFrameInfo
+{
+	UINT32 cb;
+	BOOL32 fMDIApp;
+	HWND32 hwndFrame;
+	HACCEL32 haccel;
+	UINT32 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;
+
+typedef struct tagOLEVERB
+{
+	LONG lVerb;
+	LPOLESTR32 lpszVerbName;
+	DWORD fuFlags;
+	DWORD grfAttribs;
+} OLEVERB, *LPOLEVERB;
+	
+typedef HGLOBAL32 HOLEMENU32;
+DECL_WINELIB_TYPE(HOLEMENU)
+typedef LPRECT32 LPBORDERWIDTHS;
+typedef LPCRECT32 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,  0x0000011aL, 0, 0);
+typedef struct IOleItemContainer IOleItemContainer, *LPOLEITEMCONTAINER;
+
+/*****************************************************************************
+ * IOleWindow interface
+ */
+#define ICOM_INTERFACE IOleWindow
+#define IOleWindow_METHODS \
+	ICOM_METHOD1(HRESULT,GetWindow, HWND32*,phwnd); \
+	ICOM_METHOD1(HRESULT,ContextSensitiveHelp, BOOL32,fEnterMode);
+#define IOleWindow_IMETHODS \
+	IUnknown_IMETHODS \
+	IOleWindow_METHODS
+ICOM_DEFINE(IOleWindow,IUnknown)
+#undef ICOM_INTERFACE
+
+#ifdef ICOM_CINTERFACE
+/*** IUnknown methods ***/
+#define IOleWindow_QueryInterface(p,a,b)      ICOM_ICALL2(IUnknown,QueryInterface,p,a,b)
+#define IOleWindow_AddRef(p)                  ICOM_ICALL (IUnknown,AddRef,p)
+#define IOleWindow_Release(p)                 ICOM_ICALL (IUnknown,Release,p)
+/*** IOleWindow methods ***/
+#define IOleWindow_GetWindow(p,a)             ICOM_CALL1(GetWindow,p,a)
+#define IOleWindow_ContextSensitiveHelp(p,a)  ICOM_CALL1(ContextSensitiveHelp,p,a)
+#endif
+
+
+/*****************************************************************************
+ * IOleInPlaceObject interface
+ */
+#define ICOM_INTERFACE IOleInPlaceObject
+#define IOleInPlaceObject_METHODS \
+	ICOM_METHOD (HRESULT,InPlaceDeactivate); \
+	ICOM_METHOD (HRESULT,UIDeactivate); \
+	ICOM_METHOD2(HRESULT,SetObjectRects, LPCRECT32,lprcPosRect, LPCRECT32,lprcClipRect); \
+	ICOM_METHOD (HRESULT,ReactivateAndUndo);
+#define IOleInPlaceObject_IMETHODS \
+	IOleWindow_IMETHODS \
+	IOleInPlaceObject_METHODS
+ICOM_DEFINE(IOleInPlaceObject,IOleWindow)
+#undef ICOM_INTERFACE
+
+#ifdef ICOM_CINTERFACE
+/*** IUnknown methods ***/
+#define IOleInPlaceObject_QueryInterface(p,a,b)      ICOM_CALL2(QueryInterface,p,a,b)
+#define IOleInPlaceObject_AddRef(p)                  ICOM_CALL (AddRef,p)
+#define IOleInPlaceObject_Release(p)                 ICOM_CALL (Release,p)
+/*** IOleWindow methods ***/
+#define IOleInPlaceObject_GetWindow(p,a)             ICOM_CALL1(GetWindow,p,a)
+#define IOleInPlaceObject_ContextSensitiveHelp(p,a)  ICOM_CALL1(ContextSensitiveHelp,p,a)
+/*** IOleInPlaceObject methods ***/
+#define IOleInPlaceObject_InPlaceDeactivate(p)       ICOM_CALL (InPlaceDeactivate,p)
+#define IOleInPlaceObject_UIDeactivate(p)            ICOM_CALL (UIDeactivate,p)
+#define IOleInPlaceObject_SetObjectRects(p,a,b)      ICOM_CALL2(SetObjectRects,p,a,b)
+#define IOleInPlaceObject_ReactivateAndUndo(p)       ICOM_CALL (ReactivateAndUndo,p)
+#endif
+
+/*****************************************************************************
+ * IOleInPlaceActiveObject interface
+ */
+#define ICOM_INTERFACE IOleInPlaceActiveObject
+#define IOleInPlaceActiveObject_METHODS \
+	ICOM_METHOD1(HRESULT,TranslateAccelerator, LPMSG32,lpmsg); \
+	ICOM_METHOD1(HRESULT,OnFrameWindowActivate, BOOL32,fActivate); \
+	ICOM_METHOD1(HRESULT,OnDocWindowActivate, BOOL32,fActivate); \
+	ICOM_METHOD3(HRESULT,ResizeBorder, LPCRECT32,prcBorder, IOleInPlaceUIWindow*,pUIWindow, BOOL32,fWindowFrame); \
+	ICOM_METHOD1(HRESULT,EnableModeless, BOOL32,fEnable);
+#define IOleInPlaceActiveObject_IMETHODS \
+	IOleWindow_IMETHODS \
+	IOleInPlaceActiveObject_METHODS
+ICOM_DEFINE(IOleInPlaceActiveObject,IOleWindow)
+#undef ICOM_INTERFACE
+
+#ifdef ICOM_CINTERFACE
+/*** IUnknown methods ***/
+#define IOleInPlaceActiveObject_QueryInterface(p,a,b)      ICOM_CALL2(QueryInterface,p,a,b)
+#define IOleInPlaceActiveObject_AddRef(p)                  ICOM_CALL (AddRef,p)
+#define IOleInPlaceActiveObject_Release(p)                 ICOM_CALL (Release,p)
+/*** IOleWindow methods ***/
+#define IOleInPlaceActiveObject_GetWindow(p,a)             ICOM_CALL1(GetWindow,p,a)
+#define IOleInPlaceActiveObject_ContextSensitiveHelp(p,a)  ICOM_CALL1(ContextSensitiveHelp,p,a)
+/*** IOleInPlaceActiveObject methods ***/
+#define IOleInPlaceActiveObject_TranslateAccelerator(p,a)  ICOM_CALL1(TranslateAccelerator,p,a)
+#define IOleInPlaceActiveObject_OnFrameWindowActivate(p,a) ICOM_CALL1(OnFrameWindowActivate,p,a)
+#define IOleInPlaceActiveObject_OnDocWindowActivate(p,a)   ICOM_CALL1(OnDocWindowActivate,p,a)
+#define IOleInPlaceActiveObject_ResizeBorder(p,a,b,c)      ICOM_CALL3(ResizeBorder,p,a,b,c)
+#define IOleInPlaceActiveObject_EnableModeless(p,a)        ICOM_CALL1(EnableModeless,p,a)
+#endif
+
+/*****************************************************************************
+ * IOleInPlaceUIWindow interface
+ */
+#define ICOM_INTERFACE IOleInPlaceUIWindow
+#define IOleInPlaceUIWindow_METHODS \
+	ICOM_METHOD1(HRESULT,GetBorder, LPRECT32,lprectBorder); \
+	ICOM_METHOD1(HRESULT,RequestBorderSpace, LPCBORDERWIDTHS,pborderwidths); \
+	ICOM_METHOD1(HRESULT,SetBorderSpace, LPCBORDERWIDTHS,pborderwidths); \
+	ICOM_METHOD2(HRESULT,SetActiveObject, IOleInPlaceActiveObject*,pActiveObject, LPCOLESTR32,pszObjName);
+#define IOleInPlaceUIWindow_IMETHODS \
+	IOleWindow_IMETHODS \
+	IOleInPlaceUIWindow_METHODS
+ICOM_DEFINE(IOleInPlaceUIWindow,IOleWindow)
+#undef ICOM_INTERFACE
+
+#ifdef ICOM_CINTERFACE
+/*** IUnknown methods ***/
+#define IOleInPlaceUIWindow_QueryInterface(p,a,b)     ICOM_CALL2(QueryInterface,p,a,b)
+#define IOleInPlaceUIWindow_AddRef(p)                 ICOM_CALL (AddRef,p)
+#define IOleInPlaceUIWindow_Release(p)                ICOM_CALL (Release,p)
+/*** IOleWindow methods ***/
+#define IOleInPlaceUIWindow_GetWindow(p,a)            ICOM_CALL1(GetWindow,p,a)
+#define IOleInPlaceUIWindow_ContextSensitiveHelp(p,a) ICOM_CALL1(ContextSensitiveHelp,p,a)
+/*** IOleInPlaceUIWindow methods ***/
+#define IOleInPlaceUIWindow_GetBorder(p,a)            ICOM_CALL1(GetBorder,p,a)
+#define IOleInPlaceUIWindow_RequestBorderSpace(p,a)   ICOM_CALL1(RequestBorderSpace,p,a)
+#define IOleInPlaceUIWindow_SetBorderSpace(p,a)       ICOM_CALL1(SetBorderSpace,p,a)
+#define IOleInPlaceUIWindow_SetActiveObject(p,a,b)    ICOM_CALL2(SetActiveObject,p,a,b)
+#endif
+				  
+
+/*****************************************************************************
+ * IOleInPlaceFrame interface
+ */
+#define ICOM_INTERFACE IOleInPlaceFrame
+#define IOleInPlaceFrame_METHODS \
+	ICOM_METHOD2 (HRESULT,InsertMenus, HMENU,hemnuShared, LPOLEMENUGROUPWIDTHS32,lpMenuWidths); \
+	ICOM_METHOD3 (HRESULT,SetMenu, HMENU,hemnuShared, HOLEMENU,holemenu, HWND32,hwndActiveObject); \
+	ICOM_METHOD1 (HRESULT,RemoveMenus, HMENU,hemnuShared); \
+	ICOM_METHOD1 (HRESULT,SetStatusText, LPCOLESTR32,pszStatusText); \
+	ICOM_METHOD1 (HRESULT,EnableModeless, BOOL32,fEnable); \
+	ICOM_METHOD2 (HRESULT,TranslateAccelerator, LPMSG32,lpmsg, WORD,wID);
+#define IOleInPlaceFrame_IMETHODS \
+	IOleInPlaceUIWindow_IMETHODS \
+	IOleInPlaceFrame_METHODS
+#undef ICOM_INTERFACE
+
+#ifdef ICOM_CINTERFACE
+/*** IUnknown methods ***/
+#define IOleInPlaceFrame_QueryInterface(p,a,b)    ICOM_CALL2(QueryInterface,p,a,b)
+#define IOleInPlaceFrame_AddRef(p)                ICOM_CALL (AddRef,p)
+#define IOleInPlaceFrame_Release(p)               ICOM_CALL (Release,p)
+/*** IOleWindow methods ***/
+#define IOleInPlaceFrame_GetWindow                ICOM_CALL1(GetWindow,p,a)
+#define IOleInPlaceFrame_ContextSensitiveHelp     ICOM_CALL1(ContextSensitiveHelp,p,a)
+/*** IOleInPlaceUIWindow methods ***/
+#define IOleInPlaceFrame_GetBorder                ICOM_CALL1(GetBorder,p,a)
+#define IOleInPlaceFrame_RequestBorderSpace       ICOM_CALL1(RequestBorderSpace,p,a)
+#define IOleInPlaceFrame_SetBorderSpace           ICOM_CALL1(SetBorderSpace,p,a)
+#define IOleInPlaceFrame_SetActiveObject          ICOM_CALL2(SetActiveObject,p,a,b)
+/*** IOleInPlaceFrame methods ***/
+#define IOleInPlaceFrame_InsertMenus              ICOM_CALL2(InsertMenus,p,a,b)
+#define IOleInPlaceFrame_SetMenu                  ICOM_CALL3(SetMenu,p,a,b,c)
+#define IOleInPlaceFrame_RemoveMenus              ICOM_CALL1(RemoveMenus,p,a)
+#define IOleInPlaceFrame_SetStatusText            ICOM_CALL1(SetStatusText,p,a)
+#define IOleInPlaceFrame_EnableModeless           ICOM_CALL1(EnableModeless,p,a)
+#define IOleInPlaceFrame_TranslateAccelerator     ICOM_CALL2(TranslateAccelerator,p,a,b)
+#endif
+				 
+
+/*****************************************************************************
+ * IOleInPlaceSite interface
+ */
+#define ICOM_INTERFACE IOleInPlaceSite
+#define IOleInPlaceSite_METHODS \
+	ICOM_METHOD (HRESULT,CanInPlaceActivate); \
+	ICOM_METHOD (HRESULT,OnInPlaceActivate); \
+	ICOM_METHOD (HRESULT,OnUIActivate); \
+	ICOM_METHOD5(HRESULT,GetWindowContext, IOleInPlaceFrame**,ppFrame, IOleInPlaceUIWindow**,ppDoc, LPRECT32,lprcPosRect, LPRECT32,lprcClipRect, LPOLEINPLACEFRAMEINFO,lpFrameInfo); \
+	ICOM_METHOD1(HRESULT,Scroll, SIZE32,scrollExtant); \
+	ICOM_METHOD1(HRESULT,OnUIDeactivate, BOOL32,fUndoable); \
+	ICOM_METHOD (HRESULT,OnInPlaceDeactivate); \
+	ICOM_METHOD (HRESULT,DiscardUndoState); \
+	ICOM_METHOD (HRESULT,DeactivateAndUndo); \
+	ICOM_METHOD1(HRESULT,OnPosRectChange, LPCRECT32,lprcPosRect);
+#define IOleInPlaceSite_IMETHODS \
+	IOleWindow_IMETHODS \
+	IOleInPlaceSite_METHODS
+ICOM_DEFINE(IOleInPlaceSite,IOleWindow)
+#undef ICOM_INTERFACE
+
+#ifdef ICOM_CINTERFACE
+/*** IUnknown methods ***/
+#define IOleInPlaceSite_QueryInterface(p,a,b)      ICOM_CALL2(QueryInterface,p,a,b)
+#define IOleInPlaceSite_AddRef(p)                  ICOM_CALL (AddRef,p)
+#define IOleInPlaceSite_Release(p)                 ICOM_CALL (Release,p)
+/*** IOleWindow methods ***/
+#define IOleInPlaceSite_GetWindow(p,a)             ICOM_CALL1(GetWindow,p,a)
+#define IOleInPlaceSite_ContextSensitiveHelp(p,a)  ICOM_CALL1(ContextSensitiveHelp,p,a)
+/*** IOleInPlaceSite methods ***/
+#define IOleInPlaceSite_CanInPlaceActivate(p)      ICOM_CALL (CanInPlaceActivate,p)
+#define IOleInPlaceSite_OnInPlaceActivate(p)       ICOM_CALL (OnInPlaceActivate,p)
+#define IOleInPlaceSite_OnUIActivate(p)            ICOM_CALL (OnUIActivate,p)
+#define IOleInPlaceSite_GetWindowContext(p,a,b,c,d,e) ICOM_CALL5(GetWindowContext,p,a,b,c,d,e)
+#define IOleInPlaceSite_Scroll(p,a)                ICOM_CALL1(Scroll,p,a)
+#define IOleInPlaceSite_OnUIDeactivate(p,a)        ICOM_CALL1(OnUIDeactivate,p,a)
+#define IOleInPlaceSite_OnInPlaceDeactivate(p)     ICOM_CALL (OnInPlaceDeactivate,p)
+#define IOleInPlaceSite_DiscardUndoState(p)        ICOM_CALL (DiscardUndoState,p)
+#define IOleInPlaceSite_DeactivateAndUndo(p)       ICOM_CALL (DeactivateAndUndo,p)
+#define IOleInPlaceSite_OnPosRectChange(p,a)       ICOM_CALL1(OnPosRectChange,p,a)
+#endif
+
+
+/*****************************************************************************
+ * IOleClientSite interface
+ */
+#define ICOM_INTERFACE IOleClientSite
+#define IOleClientSite_METHODS \
+	ICOM_METHOD (HRESULT,SaveObject); \
+	ICOM_METHOD3(HRESULT,GetMoniker, DWORD,dwAssign, DWORD,dwWhichMoniker, IMoniker**,ppmk); \
+	ICOM_METHOD1(HRESULT,GetContainer, IOleContainer**,ppContainer); \
+	ICOM_METHOD (HRESULT,ShowObject); \
+	ICOM_METHOD1(HRESULT,OnShowWindow, BOOL32,fShow); \
+	ICOM_METHOD (HRESULT,RequestNewObjectLayout);
+#define IOleClientSite_IMETHODS \
+	IUnknown_IMETHODS \
+	IOleClientSite_METHODS
+ICOM_DEFINE(IOleClientSite,IUnknown)
+#undef ICOM_INTERFACE
+
+#ifdef ICOM_CINTERFACE
+/*** IUnknown methods ***/
+#define IOleClientSite_QueryInterface(p,a,b)      ICOM_CALL2(QueryInterface,p,a,b)
+#define IOleClientSite_AddRef(p)                  ICOM_CALL (AddRef,p)
+#define IOleClientSite_Release(p)                 ICOM_CALL (Release,p)
+/*** IOleClientSite methods ***/
+#define IOleClientSite_SaveObject(p)              ICOM_CALL (SaveObject,p)
+#define IOleClientSite_GetMoniker(p,a,b,c)        ICOM_CALL3(GetMoniker,p,a,b,c)
+#define IOleClientSite_GetContainer(p,a)          ICOM_CALL1(GetContainer,p,a)
+#define IOleClientSite_ShowObject(p)              ICOM_CALL (ShowObject,p)
+#define IOleClientSite_OnShowWindow(p,a)          ICOM_CALL1(OnShowWindow,p,a)
+#define IOleClientSite_RequestNewObjectLayout(p)  ICOM_CALL (RequestNewObjectLayout(p)
+#endif
+
+
+/*****************************************************************************
+ * IParseDisplayName interface
+ */
+#define ICOM_INTERFACE IParseDisplayName
+#define IParseDisplayName_METHODS \
+	ICOM_METHOD4(HRESULT,ParseDisplayName, IBindCtx*,pbc, LPOLESTR32,pszDisplayName, ULONG*,pchEaten, IMoniker**,ppmkOut);
+#define IParseDisplayName_IMETHODS \
+	IUnknown_IMETHODS \
+	IParseDisplayName_METHODS
+ICOM_DEFINE(IParseDisplayName,IUnknown)
+#undef ICOM_INTERFACE
+				
+#ifdef ICOM_CINTERFACE
+/*** IUnknown methods ***/
+#define IParseDisplayName_QueryInterface(p,a,b)      ICOM_CALL2(QueryInterface,p,a,b)
+#define IParseDisplayName_AddRef(p)                  ICOM_CALL (AddRef,p)
+#define IParseDisplayName_Release(p)                 ICOM_CALL (Release,p)
+/*** IParseDisplayName methods ***/
+#define IParseDisplayName_ParseDisplayName(p,a,b,c,d) ICOM_CALL4(ParseDisplayName,a,b,c,d)
+#endif
+				 
+				
+/*****************************************************************************
+ * IOleContainer interface
+ */
+#define ICOM_INTERFACE IOleContainer
+#define IOleContainer_METHODS \
+	ICOM_METHOD2(HRESULT,EnumObjects, DWORD,grfFlags, IEnumUnknown**,ppenum); \
+	ICOM_METHOD1(HRESULT,LockContainer, BOOL32,fLock);
+#define IOleContainer_IMETHODS \
+	IParseDisplayName_IMETHODS \
+	IOleContainer_METHODS
+ICOM_DEFINE(IOleContainer,IParseDisplayName)
+#undef ICOM_INTERFACE
+
+#ifdef ICOM_CINTERFACE
+/*** IUnknown methods ***/
+#define IOleContainer_QueryInterface(p,a,b)       ICOM_CALL2(QueryInterface,p,a,b)
+#define IOleContainer_AddRef(p)                   ICOM_CALL (AddRef,p)
+#define IOleContainer_Release(p)                  ICOM_CALL (Release,p)
+/*** IParseDisplayName methods ***/
+#define IOleContainer_ParseDisplayName(p,a,b,c,d) ICOM_CALL4(ParseDisplayName,p,a,b,c,d)
+/*** IOleClientSite methods ***/
+#define IOleContainer_EnumObjects(p,a,b)          ICOM_CALL (EnumObjects,p,a,b)
+#define IOleContainer_LockContainer(p,a)          ICOM_CALL3(LockContainer,p,a)
+#endif
+
+
+/*****************************************************************************
+ * IOleItemContainer interface
+ */
+#define ICOM_INTERFACE IOleItemContainer
+#define IOleItemContainer_METHODS \
+	ICOM_METHOD5(HRESULT,GetObject, LPOLESTR32,pszItem, DWORD,dwSpeedNeeded, IBindCtx*,pbc, REFIID,riid, void*,ppvObject); \
+	ICOM_METHOD4(HRESULT,GetObjectStorage, LPOLESTR32,pszItem, IBindCtx*,pbc, REFIID,riid, void*,ppvStorage); \
+	ICOM_METHOD1(HRESULT,IsRunning, LPOLESTR32,pszItem);
+#define IOleItemContainer_IMETHODS \
+	IOleContainer_IMETHODS \
+	IOleItemContainer_METHODS
+ICOM_DEFINE(IOleItemContainer,IOleContainer)
+#undef ICOM_INTERFACE
+
+#ifdef ICOM_CINTERFACE
+/*** IUnknown methods ***/
+#define IOleItemContainer_QueryInterface(p,a,b)       ICOM_CALL2(QueryInterface,p,a,b)
+#define IOleItemContainer_AddRef(p)                   ICOM_CALL (AddRef,p)
+#define IOleItemContainer_Release(p)                  ICOM_CALL (Release,p)
+/*** IParseDisplayName methods ***/
+#define IOleItemContainer_GetObject(p,a,b,c,d,e)      ICOM_CALL5(GetObject,p,a,b,c,d,e)
+#define IOleItemContainer_GetObjectStorage(p,a,b,c,d) ICOM_CALL4(GetObjectStorage,p,a,b,c,d)
+#define IOleItemContainer_IsRunning(p,a)              ICOM_CALL1(IsRunning,p,a)
+#endif
+
+
+
+#endif /* __WINE_WINE_OBJ_INPLACE_H */
+
+
diff --git a/include/wintypes.h b/include/wintypes.h
index 80913310f7e056036c84c54ab765d0ec76afa007..df17b7700852d09c6a8684a1c1fd5048a563e68c 100644
--- a/include/wintypes.h
+++ b/include/wintypes.h
@@ -532,10 +532,12 @@ typedef struct tagRECT
     INT32  right;
     INT32  bottom;
 } RECT32, *PRECT32, *LPRECT32;
+typedef const RECT32 *LPCRECT32;
 
 DECL_WINELIB_TYPE(RECT)
 DECL_WINELIB_TYPE(PRECT)
 DECL_WINELIB_TYPE(LPRECT)
+DECL_WINELIB_TYPE(LPCRECT)
 
 typedef struct tagRECTL
 {
diff --git a/ole/olefont.c b/ole/olefont.c
index 2c892929d3291b8ab4c9842c84c6330626cd6004..475fce6734755ebd7d221e50390fb7cb103c7054 100644
--- a/ole/olefont.c
+++ b/ole/olefont.c
@@ -10,8 +10,8 @@
 
 #include "windows.h"
 #include "winerror.h"
-#include "ocidl.h"
 #include "oleauto.h"
+#include "ocidl.h"
 #include "olectl.h"
 #include "debug.h"