Many new defines, and structs to help compile MFC. As well as a few
OLE corrections from earlier.

diff --git a/include/ole.h b/include/ole.h
index 1a70339..45b8879 100644
--- a/include/ole.h
+++ b/include/ole.h
@@ -18,9 +18,6 @@
 extern "C" {
 #endif
 
-#define OLESTR16(x) x
-#define OLESTR(x) L##x	/* probably wrong */
-
 /* object types */
 #define OT_LINK		1
 #define OT_EMBEDDED	2
diff --git a/include/ole2.h b/include/ole2.h
index 9536af5..e52fe3c 100644
--- a/include/ole2.h
+++ b/include/ole2.h
@@ -10,9 +10,14 @@
 #include "oleidl.h"
 #include "oleauto.h"
 
-/* OLE version */
-#define rmm             23
-#define rup            639
+#define OLEIVERB_PRIMARY            (0L)
+#define OLEIVERB_SHOW               (-1L)
+#define OLEIVERB_OPEN               (-2L)
+#define OLEIVERB_HIDE               (-3L)
+#define OLEIVERB_UIACTIVATE         (-4L)
+#define OLEIVERB_INPLACEACTIVATE    (-5L)
+#define OLEIVERB_DISCARDUNDOSTATE   (-6L)
+#define OLEIVERB_PROPERTIES         (-7L)
 
 /*
  * API declarations
@@ -26,13 +31,12 @@
 
 HOLEMENU  WINAPI OleCreateMenuDescriptor(HMENU              hmenuCombined,
 					   LPOLEMENUGROUPWIDTHS lpMenuWidths);
-void        WINAPI OleDestroyMenuDescriptor(HOLEMENU hmenuDescriptor);
+HRESULT   WINAPI OleDestroyMenuDescriptor(HOLEMENU hmenuDescriptor);
 HRESULT     WINAPI OleSetMenuDescriptor(HOLEMENU               hmenuDescriptor,
 					HWND                   hwndFrame,
 					HWND                   hwndActiveObject,
 					LPOLEINPLACEFRAME        lpFrame,
 					LPOLEINPLACEACTIVEOBJECT lpActiveObject);
 
-
 #endif  /* __WINE_OLE2_H */
 
diff --git a/include/oleauto.h b/include/oleauto.h
index 8431b13..fd11314 100644
--- a/include/oleauto.h
+++ b/include/oleauto.h
@@ -93,8 +93,13 @@
 
 /* These are macros that help accessing the VARIANT date type.
  */
+#ifdef __cplusplus
+#define V_UNION(A, B)	((A)->B)
+#define V_VT(A) 		((A)->vt)
+#else
 #define V_UNION(A, B)	((A)->u.B)
 #define V_VT(A) 		((A)->vt)
+#endif /* cplusplus */
 
 #define V_ISBYREF(A)	 (V_VT(A)&VT_BYREF)
 #define V_ISARRAY(A)	 (V_VT(A)&VT_ARRAY)
diff --git a/include/olectl.h b/include/olectl.h
index a1a332c..2196f8b 100644
--- a/include/olectl.h
+++ b/include/olectl.h
@@ -5,6 +5,68 @@
 
 #define WINOLECTLAPI INT WINAPI
 
+#ifdef __cplusplus
+#define DUMMY_UNION_NAME
+#else
+#define DUMMY_UNION_NAME u
+#endif
+ 
+/*
+ * Ole Control Interfaces
+ */
+DEFINE_GUID(CLSID_ConvertVBX,
+            0xfb8f0822,0x0164,0x101b,0x84,0xed,0x08,0x00,0x2b,0x2e,0xc7,0x13);
+DEFINE_GUID(CLSID_PersistPropset,
+            0xfb8f0821,0x0164,0x101b,0x84,0xed,0x08,0x00,0x2b,0x2e,0xc7,0x13);
+
+DEFINE_GUID(CLSID_StdFont,
+            0x0be35203,0x8f91,0x11ce,0x9d,0xe3,0x00,0xaa,0x00,0x4b,0xb8,0x51);
+DEFINE_GUID(CLSID_StdPicture,
+            0x0be35204,0x8f91,0x11ce,0x9d,0xe3,0x00,0xaa,0x00,0x4b,0xb8,0x51);
+
+DEFINE_GUID(CLSID_CFontPropPage,
+            0x0be35200,0x8f91,0x11ce,0x9d,0xe3,0x00,0xaa,0x00,0x4b,0xb8,0x51);
+DEFINE_GUID(CLSID_CColorPropPage,
+            0x0be35201,0x8f91,0x11ce,0x9d,0xe3,0x00,0xaa,0x00,0x4b,0xb8,0x51);
+DEFINE_GUID(CLSID_CPicturePropPage,
+            0x0be35202,0x8f91,0x11ce,0x9d,0xe3,0x00,0xaa,0x00,0x4b,0xb8,0x51);
+
+DEFINE_GUID(GUID_HIMETRIC,
+            0x66504300,0xBE0F,0x101A,0x8B,0xBB,0x00,0xAA,0x00,0x30,0x0C,0xAB);
+DEFINE_GUID(GUID_COLOR,
+            0x66504301,0xBE0F,0x101A,0x8B,0xBB,0x00,0xAA,0x00,0x30,0x0C,0xAB);
+DEFINE_GUID(GUID_XPOSPIXEL,
+            0x66504302,0xBE0F,0x101A,0x8B,0xBB,0x00,0xAA,0x00,0x30,0x0C,0xAB);
+DEFINE_GUID(GUID_YPOSPIXEL,
+            0x66504303,0xBE0F,0x101A,0x8B,0xBB,0x00,0xAA,0x00,0x30,0x0C,0xAB);
+DEFINE_GUID(GUID_XSIZEPIXEL,
+            0x66504304,0xBE0F,0x101A,0x8B,0xBB,0x00,0xAA,0x00,0x30,0x0C,0xAB);
+DEFINE_GUID(GUID_YSIZEPIXEL,
+            0x66504305,0xBE0F,0x101A,0x8B,0xBB,0x00,0xAA,0x00,0x30,0x0C,0xAB);
+DEFINE_GUID(GUID_XPOS,
+            0x66504306,0xBE0F,0x101A,0x8B,0xBB,0x00,0xAA,0x00,0x30,0x0C,0xAB);
+DEFINE_GUID(GUID_YPOS,
+            0x66504307,0xBE0F,0x101A,0x8B,0xBB,0x00,0xAA,0x00,0x30,0x0C,0xAB);
+DEFINE_GUID(GUID_XSIZE,
+            0x66504308,0xBE0F,0x101A,0x8B,0xBB,0x00,0xAA,0x00,0x30,0x0C,0xAB);
+DEFINE_GUID(GUID_YSIZE,
+            0x66504309,0xBE0F,0x101A,0x8B,0xBB,0x00,0xAA,0x00,0x30,0x0C,0xAB);
+ 
+typedef struct tagOCPFIPARAMS
+{
+	ULONG cbStructSize;
+	HWND hWndOwner;
+	int x;
+	int y;
+	LPCOLESTR lpszCaption;
+	ULONG cObjects;
+	LPUNKNOWN *lplpUnk;
+	ULONG cPages;
+	CLSID *lpPages;
+	LCID lcid;
+	DISPID dispidInitialProperty;
+} OCPFIPARAMS, *LPOCPFIPARAMS;
+
 /*
  * FONTDESC is used as an OLE encapsulation of the GDI fonts
  */
@@ -16,10 +78,42 @@
   SHORT      sCharset;
   BOOL     fItalic;
   BOOL     fUnderline;
-  BOOL     fStrikeThrough;
+  BOOL     fStrikethrough;
 } FONTDESC, *LPFONTDESC;
 
-WINOLECTLAPI OleCreateFontIndirect(LPFONTDESC lpFontDesc, REFIID riid, VOID** ppvObj);
+#define FONTSIZE(n) { n##0000, 0 }
+
+/* COREL MOD PQ mar 9 - redecl in mfc */
+/*WINOLECTLAPI OleCreateFontIndirect(LPFONTDESC lpFontDesc, REFIID riid, VOID** ppvObj);*/
+
+#define PICTYPE_UNINITIALIZED (-1)
+#define PICTYPE_NONE          0
+#define PICTYPE_BITMAP        1
+#define PICTYPE_METAFILE      2
+#define PICTYPE_ICON          3
+#define PICTYPE_ENHMETAFILE   4
+
+typedef struct tagPICTDESC {
+	UINT cbSizeofstruct;
+	UINT picType;
+	union {
+			struct {
+					HBITMAP hbitmap;
+					HPALETTE hpal;
+			} bmp;
+			struct {
+					HMETAFILE hmeta;
+					int xExt;
+					int yExt;
+			} wmf;
+			struct {
+					HICON hicon;
+			} icon;
+			struct {
+					HENHMETAFILE hemf;
+			} emf;
+	} DUMMY_UNION_NAME;
+} PICTDESC, *LPPICTDESC;
 
 typedef long OLE_XPOS_PIXELS;
 typedef long OLE_YPOS_PIXELS;
@@ -42,6 +136,36 @@
 typedef VARIANT_BOOL OLE_ENABLEDEFAULTBOOL;
 
 /* standard dispatch ID's */
+#define DISPID_AUTOSIZE                 (-500)
+#define DISPID_BACKCOLOR                (-501)
+#define DISPID_BACKSTYLE                (-502)
+#define DISPID_BORDERCOLOR              (-503)
+#define DISPID_BORDERSTYLE              (-504)
+#define DISPID_BORDERWIDTH              (-505)
+#define DISPID_DRAWMODE                 (-507)
+#define DISPID_DRAWSTYLE                (-508)
+#define DISPID_DRAWWIDTH                (-509)
+#define DISPID_FILLCOLOR                (-510)
+#define DISPID_FILLSTYLE                (-511)
+#define DISPID_FONT                     (-512)
+#define DISPID_FORECOLOR                (-513)
+#define DISPID_ENABLED                  (-514)
+#define DISPID_HWND                     (-515)
+#define DISPID_TABSTOP                  (-516)
+#define DISPID_TEXT                     (-517)
+#define DISPID_CAPTION                  (-518)
+#define DISPID_BORDERVISIBLE            (-519)
+#define DISPID_APPEARANCE               (-520)
+#define DISPID_MOUSEPOINTER             (-521)
+#define DISPID_MOUSEICON                (-522)
+#define DISPID_PICTURE                  (-523)
+#define DISPID_VALID                    (-524)
+#define DISPID_READYSTATE               (-525)
+
+#define DISPID_REFRESH                  (-550)
+#define DISPID_DOCLICK                  (-551)
+#define DISPID_ABOUTBOX                 (-552)
+
 #define DISPID_CLICK                    (-600)
 #define DISPID_DBLCLICK                 (-601)
 #define DISPID_KEYDOWN                  (-602)
@@ -100,6 +224,72 @@
 #define OCM_PARENTNOTIFY    (OCM__BASE + WM_PARENTNOTIFY)
 #define OCM_NOTIFY            (OCM__BASE + WM_NOTIFY)
 
+#define CONNECT_E_FIRST    MAKE_SCODE(SEVERITY_ERROR,   FACILITY_ITF, 0x0200)
+#define CONNECT_E_LAST     MAKE_SCODE(SEVERITY_ERROR,   FACILITY_ITF, 0x020F)
+#define CONNECT_S_FIRST    MAKE_SCODE(SEVERITY_SUCCESS, FACILITY_ITF, 0x0200)
+#define CONNECT_S_LAST     MAKE_SCODE(SEVERITY_SUCCESS, FACILITY_ITF, 0x020F)
+
+#define CONNECT_E_NOCONNECTION      (CONNECT_E_FIRST+0)
+#define CONNECT_E_ADVISELIMIT       (CONNECT_E_FIRST+1)
+#define CONNECT_E_CANNOTCONNECT     (CONNECT_E_FIRST+2)
+#define CONNECT_E_OVERRIDDEN        (CONNECT_E_FIRST+3)
+
+#ifndef FACILITY_CONTROL
+#define FACILITY_CONTROL 0xa
+#endif
+#define STD_CTL_SCODE(n) MAKE_SCODE(SEVERITY_ERROR, FACILITY_CONTROL, n)
+#define CTL_E_ILLEGALFUNCTIONCALL       STD_CTL_SCODE(5)
+#define CTL_E_OVERFLOW                  STD_CTL_SCODE(6)
+#define CTL_E_OUTOFMEMORY               STD_CTL_SCODE(7)
+#define CTL_E_DIVISIONBYZERO            STD_CTL_SCODE(11)
+#define CTL_E_OUTOFSTRINGSPACE          STD_CTL_SCODE(14)
+#define CTL_E_OUTOFSTACKSPACE           STD_CTL_SCODE(28)
+#define CTL_E_BADFILENAMEORNUMBER       STD_CTL_SCODE(52)
+#define CTL_E_FILENOTFOUND              STD_CTL_SCODE(53)
+#define CTL_E_BADFILEMODE               STD_CTL_SCODE(54)
+#define CTL_E_FILEALREADYOPEN           STD_CTL_SCODE(55)
+#define CTL_E_DEVICEIOERROR             STD_CTL_SCODE(57)
+#define CTL_E_FILEALREADYEXISTS         STD_CTL_SCODE(58)
+#define CTL_E_BADRECORDLENGTH           STD_CTL_SCODE(59)
+#define CTL_E_DISKFULL                  STD_CTL_SCODE(61)
+#define CTL_E_BADRECORDNUMBER           STD_CTL_SCODE(63)
+#define CTL_E_BADFILENAME               STD_CTL_SCODE(64)
+#define CTL_E_TOOMANYFILES              STD_CTL_SCODE(67)
+#define CTL_E_DEVICEUNAVAILABLE         STD_CTL_SCODE(68)
+#define CTL_E_PERMISSIONDENIED          STD_CTL_SCODE(70)
+#define CTL_E_DISKNOTREADY              STD_CTL_SCODE(71)
+#define CTL_E_PATHFILEACCESSERROR       STD_CTL_SCODE(75)
+#define CTL_E_PATHNOTFOUND              STD_CTL_SCODE(76)
+#define CTL_E_INVALIDPATTERNSTRING      STD_CTL_SCODE(93)
+#define CTL_E_INVALIDUSEOFNULL          STD_CTL_SCODE(94)
+#define CTL_E_INVALIDFILEFORMAT         STD_CTL_SCODE(321)
+#define CTL_E_INVALIDPROPERTYVALUE      STD_CTL_SCODE(380)
+#define CTL_E_INVALIDPROPERTYARRAYINDEX STD_CTL_SCODE(381)
+#define CTL_E_SETNOTSUPPORTEDATRUNTIME  STD_CTL_SCODE(382)
+#define CTL_E_SETNOTSUPPORTED           STD_CTL_SCODE(383)
+#define CTL_E_NEEDPROPERTYARRAYINDEX    STD_CTL_SCODE(385)
+#define CTL_E_SETNOTPERMITTED           STD_CTL_SCODE(387)
+#define CTL_E_GETNOTSUPPORTEDATRUNTIME  STD_CTL_SCODE(393)
+#define CTL_E_GETNOTSUPPORTED           STD_CTL_SCODE(394)
+#define CTL_E_PROPERTYNOTFOUND          STD_CTL_SCODE(422)
+#define CTL_E_INVALIDCLIPBOARDFORMAT    STD_CTL_SCODE(460)
+#define CTL_E_INVALIDPICTURE            STD_CTL_SCODE(481)
+#define CTL_E_PRINTERERROR              STD_CTL_SCODE(482)
+#define CTL_E_CANTSAVEFILETOTEMP        STD_CTL_SCODE(735)
+#define CTL_E_SEARCHTEXTNOTFOUND        STD_CTL_SCODE(744)
+#define CTL_E_REPLACEMENTSTOOLONG       STD_CTL_SCODE(746)
+
+#define VT_STREAMED_PROPSET 73  //       [P]  Stream contains a property set
+#define VT_STORED_PROPSET   74  //       [P]  Storage contains a property set
+#define VT_BLOB_PROPSET     75  //       [P]  Blob contains a property set
+#define VT_VERBOSE_ENUM     76  //       [P]  Enum value with text string
+
+#define PERPROP_E_FIRST    MAKE_SCODE(SEVERITY_ERROR,   FACILITY_ITF, 0x0200)
+#define PERPROP_E_LAST     MAKE_SCODE(SEVERITY_ERROR,   FACILITY_ITF, 0x020F)
+#define PERPROP_S_FIRST    MAKE_SCODE(SEVERITY_SUCCESS, FACILITY_ITF, 0x0200)
+#define PERPROP_S_LAST     MAKE_SCODE(SEVERITY_SUCCESS, FACILITY_ITF, 0x020F)
+
+#define PERPROP_E_NOPAGEAVAILABLE   (PERPROP_E_FIRST+0)
 
 #endif /*  __WINE_OLECTL_H */
 
diff --git a/include/wine/obj_control.h b/include/wine/obj_control.h
index 2fbe0ae..9bbe780 100644
--- a/include/wine/obj_control.h
+++ b/include/wine/obj_control.h
@@ -94,6 +94,39 @@
 	OLEDC_OFFSCREEN = 0x4
 } OLEDCFLAGS;
 
+typedef enum tagDVASPECT2
+{
+	DVASPECT_OPAQUE = 16,
+	DVASPECT_TRANSPARENT = 32,
+} DVASPECT2;
+
+typedef enum tagHITRESULT 
+{
+	HITRESULT_OUTSIDE = 0,
+	HITRESULT_TRANSPARENT = 1,
+	HITRESULT_CLOSE = 2,
+	HITRESULT_HIT = 3
+} HITRESULT;
+
+typedef enum tagAspectInfoFlag
+{
+	DVASPECTINFOFLAG_CANOPTIMIZE = 1
+} DVASPECTINFOFLAG;
+
+typedef struct tagAspectInfo
+{
+	ULONG cb;
+	DWORD dwFlags;
+} DVASPECTINFO;
+
+typedef enum tagVIEWSTATUS
+{
+	VIEWSTATUS_OPAQUE = 1,
+	VIEWSTATUS_SOLIDBKGND = 2,
+	VIEWSTATUS_DVASPECTOPAQUE = 4,
+	VIEWSTATUS_DVASPECTTRANSPARENT = 8
+} VIEWSTATUS;
+
 /*****************************************************************************
  * Predeclare the interfaces
  */
diff --git a/include/wine/obj_dataobject.h b/include/wine/obj_dataobject.h
index 7cf948c..15d9a4e 100644
--- a/include/wine/obj_dataobject.h
+++ b/include/wine/obj_dataobject.h
@@ -112,6 +112,24 @@
     IUnknown *pUnkForRelease;
 };   
 
+typedef enum tagADVF
+{
+	ADVF_NODATA = 1,
+	ADVF_PRIMEFIRST = 2,
+	ADVF_ONLYONCE = 4,
+	ADVF_DATAONSTOP = 64,
+	ADVFCACHE_NOHANDLER = 8,
+	ADVFCACHE_FORCEBUILTIN = 16,
+	ADVFCACHE_ONSAVE = 32
+} ADVF;
+
+typedef struct tagSTATDATA
+{
+	FORMATETC formatetc;
+	DWORD advf;
+	IAdviseSink *pAdvSink;
+	DWORD dwConnection;
+} STATDATA, *LPSTATDATA;
 
 /*****************************************************************************
  * IAdviseSink interface
@@ -213,7 +231,7 @@
     ICOM_METHOD2(HRESULT,GetCanonicalFormatEtc, LPFORMATETC,pformatectIn, LPFORMATETC,pformatetcOut) \
     ICOM_METHOD3(HRESULT,SetData,               LPFORMATETC,pformatetc, STGMEDIUM*,pmedium, BOOL,fRelease) \
     ICOM_METHOD2(HRESULT,EnumFormatEtc,         DWORD,dwDirection, IEnumFORMATETC**,ppenumFormatEtc) \
-    ICOM_METHOD4(HRESULT,DAdvise,               LPFORMATETC*,pformatetc, DWORD,advf, IAdviseSink*,pAdvSink, DWORD*,pdwConnection) \
+    ICOM_METHOD4(HRESULT,DAdvise,               FORMATETC*,pformatetc, DWORD,advf, IAdviseSink*,pAdvSink, DWORD*,pdwConnection) \
     ICOM_METHOD1(HRESULT,DUnadvise,             DWORD,dwConnection) \
     ICOM_METHOD1(HRESULT,EnumDAdvise,           IEnumSTATDATA**,ppenumAdvise)
 #define IDataObject_IMETHODS \
@@ -271,17 +289,9 @@
 /*****************************************************************************
  * IEnumSTATDATA interface
  */
-typedef struct tagSTATDATA
-{
-    FORMATETC formatetc;
-    DWORD advf;
-    IAdviseSink* pAdvSink;
-    DWORD dwConnection;
-} STATDATA32;
-
 #define ICOM_INTERFACE IEnumSTATDATA
 #define IEnumSTATDATA_METHODS \
-    ICOM_METHOD3(HRESULT,Next,  ULONG,celt, STATDATA32*,rgelt, ULONG*,pceltFethed) \
+    ICOM_METHOD3(HRESULT,Next,  ULONG,celt, STATDATA*,rgelt, ULONG*,pceltFethed) \
     ICOM_METHOD1(HRESULT,Skip,  ULONG,celt) \
     ICOM_METHOD (HRESULT,Reset) \
     ICOM_METHOD1(HRESULT,Clone, IEnumSTATDATA**,ppenum)
diff --git a/include/wine/obj_dragdrop.h b/include/wine/obj_dragdrop.h
index 9123a91..56081a2 100644
--- a/include/wine/obj_dragdrop.h
+++ b/include/wine/obj_dragdrop.h
@@ -28,6 +28,11 @@
 #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
diff --git a/include/wine/obj_inplace.h b/include/wine/obj_inplace.h
index 866cba5..944b8f5 100644
--- a/include/wine/obj_inplace.h
+++ b/include/wine/obj_inplace.h
@@ -64,7 +64,7 @@
 {
 	OLEUPDATE_ALWAYS = 1,
 	OLEUPDATE_ONCALL = 3
-} OLEUPDATE;
+} OLEUPDATE, *LPOLEUPDATE;
 
 typedef struct tagOLEVERB
 {
@@ -74,6 +74,25 @@
 	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 HGLOBAL HOLEMENU;
 typedef LPRECT LPBORDERWIDTHS;
 typedef LPCRECT LPCBORDERWIDTHS;
@@ -112,6 +131,9 @@
 DEFINE_OLEGUID(IID_IOleItemContainer,  0x0000011aL, 0, 0);
 typedef struct IOleItemContainer IOleItemContainer, *LPOLEITEMCONTAINER;
 
+DEFINE_OLEGUID(IID_IOleLink,  0x0000011dL, 0, 0);
+typedef struct IOleLink IOleLink, *LPOLELINK;
+
 /*****************************************************************************
  * IOleWindow interface
  */
@@ -418,6 +440,47 @@
 #endif
 
 
+/*****************************************************************************
+ * IOleItemContainer interface
+ */
+#define ICOM_INTERFACE IOleLink
+#define IOleLink_METHODS \
+	ICOM_METHOD1(HRESULT,SetUpdateOptions, DWORD,dwUpdateOpt) \
+	ICOM_METHOD1(HRESULT,GetUpdateOptions, DWORD*,pdwUpdateOpt) \
+	ICOM_METHOD2(HRESULT,SetSourceMoniker, IMoniker*,pmk, REFCLSID,rclsid) \
+	ICOM_METHOD1(HRESULT,GetSourceMoniker, IMoniker**,ppmk) \
+	ICOM_METHOD1(HRESULT,SetSourceDisplayName, LPCOLESTR,pszStatusText) \
+	ICOM_METHOD1(HRESULT,GetSourceDisplayName, LPOLESTR*,ppszDisplayName) \
+	ICOM_METHOD2(HRESULT,BindToSource, DWORD,bindflags, IBindCtx*,pbc) \
+	ICOM_METHOD (HRESULT,BindIfRunning) \
+	ICOM_METHOD1(HRESULT,GetBoundSource, IUnknown**,ppunk) \
+	ICOM_METHOD (HRESULT,UnBindSource) \
+	ICOM_METHOD1(HRESULT,Update, IBindCtx*,pbc)
+#define IOleLink_IMETHODS \
+	IUnknown_IMETHODS \
+	IOleLink_METHODS
+ICOM_DEFINE(IOleLink,IUnknown)
+#undef ICOM_INTERFACE
+
+#ifdef ICOM_CINTERFACE
+/*** IUnknown methods ***/
+#define IOleLink_QueryInterface(p,a,b)       ICOM_CALL2(QueryInterface,p,a,b)
+#define IOleLink_AddRef(p)                   ICOM_CALL (AddRef,p)
+#define IOleLink_Release(p)                  ICOM_CALL (Release,p)
+/*** IOleLink methods ***/
+#define IOleLink_SetUpdateOptions(p,a)       ICOM_CALL1(SetUpdateOptions,p,a)
+#define IOleLink_GetUpdateOptions(p,a)       ICOM_CALL1(GetUpdateOptions,p,a)
+#define IOleLink_SetSourceMoniker(p,a,b)     ICOM_CALL2(SetSourceMoniker,p,a,b)
+#define IOleLink_GetSourceMoniker(p,a)       ICOM_CALL1(GetSourceMoniker,p,a)
+#define IOleLink_SetSourceDisplayName(p,a)   ICOM_CALL1(SetSourceDisplayName,p,a)
+#define IOleLink_GetSourceDisplayName(p,a)   ICOM_CALL1(GetSourceDisplayName,p,a)
+#define IOleLink_BindToSource(p,a,b)         ICOM_CALL2(BindToSource,p,a,b)
+#define IOleLink_BindIfRunning(p)            ICOM_CALL (BindIfRunning,p)
+#define IOleLink_GetBoundSource(p,a)         ICOM_CALL1(GetBoundSource,p,a)
+#define IOleLink_UnBindSource(p)             ICOM_CALL (UnBindSource,p)
+#define IOleLink_Update(p,a)                 ICOM_CALL1(Update,p,a)
+#endif
+
 
 #endif /* __WINE_WINE_OBJ_INPLACE_H */
 
diff --git a/include/wine/obj_moniker.h b/include/wine/obj_moniker.h
index 8e84c09..ddc65a8 100644
--- a/include/wine/obj_moniker.h
+++ b/include/wine/obj_moniker.h
@@ -129,7 +129,7 @@
  */
 #define ICOM_INTERFACE IEnumMoniker
 #define IEnumMoniker_METHODS \
-    ICOM_METHOD3(HRESULT,Next,  ULONG,celt, IMoniker***,rgelt, ULONG*,pceltFethed) \
+    ICOM_METHOD3(HRESULT,Next,  ULONG,celt, IMoniker**,rgelt, ULONG*,pceltFethed) \
     ICOM_METHOD1(HRESULT,Skip,  ULONG,celt) \
     ICOM_METHOD (HRESULT,Reset) \
     ICOM_METHOD1(HRESULT,Clone, IEnumMoniker**,ppenum)
diff --git a/include/wine/obj_oleaut.h b/include/wine/obj_oleaut.h
index 137e8ae..c5a6b65 100644
--- a/include/wine/obj_oleaut.h
+++ b/include/wine/obj_oleaut.h
@@ -132,7 +132,7 @@
 	WORD wReserved1;
 	WORD wReserved2;
 	WORD wReserved3;
-	union DUMMY_UNION_NAME
+	union /*DUMMY_UNION_NAME*/
 	{
 	/* By value. */
 		CHAR cVal;
@@ -185,6 +185,11 @@
 typedef DWORD HREFTYPE;
 typedef DISPID MEMBERID;
 
+#define DISPATCH_METHOD         0x1
+#define DISPATCH_PROPERTYGET    0x2
+#define DISPATCH_PROPERTYPUT    0x4
+#define DISPATCH_PROPERTYPUTREF 0x8
+
 #define DISPID_UNKNOWN  ( -1 )
 #define DISPID_VALUE  ( 0 )
 #define DISPID_PROPERTYPUT  ( -3 )
@@ -390,6 +395,22 @@
 	ITypeComp *lptcomp;
 } BINDPTR, *LPBINDPTR;
 
+typedef enum tagVARFLAGS
+{
+	VARFLAG_FREADONLY = 0x1,
+	VARFLAG_FSOURCE = 0x2,
+	VARFLAG_FBINDABLE = 0x4,
+	VARFLAG_FREQUESTEDIT  = 0x8,
+	VARFLAG_FDISPLAYBIND  = 0x10,
+	VARFLAG_FDEFAULTBIND  = 0x20,
+	VARFLAG_FHIDDEN = 0x40,
+	VARFLAG_FRESTRICTED = 0x80,
+	VARFLAG_FDEFAULTCOLLELEM  = 0x100,
+	VARFLAG_FUIDEFAULT  = 0x200,
+	VARFLAG_FNONBROWSABLE = 0x400,
+	VARFLAG_FREPLACEABLE  = 0x800,
+	VARFLAG_FIMMEDIATEBIND  = 0x1000
+} VARFLAGS;
 
 /*****************************************************************
  *  SafeArray defines and structs 
@@ -526,7 +547,7 @@
 	ICOM_METHOD3(HRESULT,CreateInstance, IUnknown*,pUnkOuter, REFIID,riid, PVOID*,ppvObj) \
 	ICOM_METHOD2(HRESULT,GetMops, MEMBERID,memid, BSTR*,pBstrMops) \
 	ICOM_METHOD2(HRESULT,GetContainingTypeLib, ITypeLib**,ppTLib, UINT*,pIndex) \
-	ICOM_METHOD1(HRESULT,ReleaseTypeAttr, TYPEATTR,*pTypeAttr) \
+	ICOM_METHOD1(HRESULT,ReleaseTypeAttr, TYPEATTR*,pTypeAttr) \
 	ICOM_METHOD1(HRESULT,ReleaseFuncDesc, FUNCDESC*,pFuncDesc) \
 	ICOM_METHOD1(HRESULT,ReleaseVarDesc, VARDESC*,pVarDesc) 
 #define ITypeInfo_IMETHODS \
diff --git a/include/wine/obj_olefont.h b/include/wine/obj_olefont.h
index da62135..d4e6dbf 100644
--- a/include/wine/obj_olefont.h
+++ b/include/wine/obj_olefont.h
@@ -90,6 +90,31 @@
 #define IFont_SetHdc(p,a)            ICOM_CALL1(SetHdc,a)
 #endif
 
+/*****************************************************************************
+ * IFont interface
+ */
+#define ICOM_INTERFACE IFontDisp
+#define IFontDisp_METHODS 
+#define IFontDisp_IMETHODS \
+  IUnknown_IMETHODS \
+	IFontDisp_METHODS
+ICOM_DEFINE(IFontDisp,IDispatch)
+#undef ICOM_INTERFACE
+
+#ifdef ICOM_CINTERFACE
+/*** IUnknown methods ***/
+#define IFontDisp_QueryInterface(p,a,b)  ICOM_CALL2(QueryInterface,p,a,b)
+#define IFontDisp_AddRef(p)              ICOM_CALL (AddRef,p)
+#define IFontDisp_Release(p)             ICOM_CALL (Release,p)
+/*** IDispatch methods ***/
+#define IFontDisp_GetTypeInfoCount(p,a)      ICOM_CALL1 (GetTypeInfoCount,p,a)
+#define IFontDisp_GetTypeInfo(p,a,b,c)       ICOM_CALL3 (GetTypeInfo,p,b,c)
+#define IFontDisp_GetIDsOfNames(p,a,b,c,d,e) ICOM_CALL5 (GetIDsOfNames,p,a,b,c,d,e)
+#define IFontDisp_Invoke(p,a,b,c,d,e,f,g,h)  ICOM_CALL8 (Invoke,p,a,b,c,d,e,f,g,h)
+/*** IFontDisp methods ***/
+#endif
+
+
 #endif /* __WINE_WINE_OBJ_OLEFONT_H */
 
 
diff --git a/include/wine/obj_oleobj.h b/include/wine/obj_oleobj.h
index 6af05e5..561a6c1 100644
--- a/include/wine/obj_oleobj.h
+++ b/include/wine/obj_oleobj.h
@@ -27,6 +27,38 @@
 	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_INVISABLEATRUNTIME = 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
  */
@@ -57,7 +89,7 @@
 	ICOM_METHOD (HRESULT,Update); \
 	ICOM_METHOD (HRESULT,IsUpToDate); \
 	ICOM_METHOD1(HRESULT,GetUserClassID, CLSID*,pClsid); \
-	ICOM_METHOD2(HRESULT,GetUserType, DWORD,dwFormOfType, LPOLESTR,pszUserType); \
+	ICOM_METHOD2(HRESULT,GetUserType, DWORD,dwFormOfType, LPOLESTR*,pszUserType); \
 	ICOM_METHOD2(HRESULT,SetExtent, DWORD,dwDrawAspect, SIZEL*,psizel); \
 	ICOM_METHOD2(HRESULT,GetExtent, DWORD,dwDrawAspect, SIZEL*,psizel); \
 	ICOM_METHOD2(HRESULT,Advise, IAdviseSink*,pAdvSink, DWORD*,pdwConnection); \
diff --git a/include/wine/obj_oleundo.h b/include/wine/obj_oleundo.h
index c150b3d..0382203 100644
--- a/include/wine/obj_oleundo.h
+++ b/include/wine/obj_oleundo.h
@@ -39,7 +39,7 @@
  */
 typedef enum tagQACONTAINERFLAGS
 {
-	QACONTAINER_SHOWWATCHING = 0x1,
+	QACONTAINER_SHOWHATCHING = 0x1,
 	QACONTAINER_SHOWGRABHANDLES = 0x2,
 	QACONTAINER_USERMODE = 0x4,
 	QACONTAINER_DISPLAYASDEFAULT = 0x8,
diff --git a/include/wine/obj_oleview.h b/include/wine/obj_oleview.h
index 4d1004b..e35e164 100644
--- a/include/wine/obj_oleview.h
+++ b/include/wine/obj_oleview.h
@@ -29,9 +29,11 @@
 /*****************************************************************************
  * IViewObject interface
  */
+typedef BOOL    (CALLBACK* pfnContinue)(DWORD);
+
 #define ICOM_INTERFACE IViewObject
 #define IViewObject_METHODS \
-	ICOM_METHOD10(HRESULT,Draw, DWORD,dwDrawAspect, LONG,lindex, void*,pvAspect, DVTARGETDEVICE*,ptd, HDC,hdcTargetDev, HDC,hdcDraw, LPCRECTL,lprcBounds, LPCRECTL,lprcWBounds, BOOL*,pfContinue(DWORD dwContinue), DWORD,dwContinue) \
+	ICOM_METHOD10(HRESULT,Draw, DWORD,dwDrawAspect, LONG,lindex, void*,pvAspect, DVTARGETDEVICE*,ptd, HDC,hdcTargetDev, HDC,hdcDraw, LPCRECTL,lprcBounds, LPCRECTL,lprcWBounds, pfnContinue,, DWORD,dwContinue) \
 	ICOM_METHOD6(HRESULT,GetColorSet, DWORD,dwDrawAspect, LONG,lindex, void*,pvAspect, DVTARGETDEVICE*,ptd, HDC,hicTargetDevice, LOGPALETTE**,ppColorSet) \
 	ICOM_METHOD4(HRESULT,Freeze, DWORD,dwDrawAspect, LONG,lindex, void*,pvAspect, DWORD*,pdwFreeze) \
 	ICOM_METHOD1(HRESULT,Unfreeze, DWORD,dwFreeze) \
diff --git a/include/wine/obj_picture.h b/include/wine/obj_picture.h
index 47489ac..6ff1b24 100644
--- a/include/wine/obj_picture.h
+++ b/include/wine/obj_picture.h
@@ -31,7 +31,7 @@
 typedef struct IPictureDisp IPictureDisp, *LPPICTUREDISP;
 
 /*****************************************************************************
- * IFont interface
+ * IPicture interface
  */
 #define ICOM_INTERFACE IPicture
 #define IPicture_METHODS \
@@ -60,7 +60,7 @@
 #define IPicture_QueryInterface(p,a,b)         ICOM_CALL2(QueryInterface,p,a,b)
 #define IPicture_AddRef(p)                     ICOM_CALL (AddRef,p)
 #define IPicture_Release(p)                    ICOM_CALL (Release,p)
-/*** IFont methods ***/
+/*** IPicture methods ***/
 #define IPicture_get_Handle(p,a)               ICOM_CALL1(get_Handle,p,a)
 #define IPicture_get_hPal(p,a)                 ICOM_CALL1(get_hPal,p,a)
 #define IPicture_get_Type(p,a)                 ICOM_CALL1(get_Type,p,a)
@@ -78,6 +78,31 @@
 #endif
 
 
+/*****************************************************************************
+ * IPictureDisp interface
+ */
+#define ICOM_INTERFACE IPictureDisp
+#define IPictureDisp_METHODS 
+#define IPictureDisp_IMETHODS \
+				IDispatch_IMETHODS \
+				IPictureDisp_METHODS
+ICOM_DEFINE(IPictureDisp,IDispatch)
+#undef ICOM_INTERFACE
+
+#ifdef ICOM_CINTERFACE
+/*** IUnknown methods ***/
+#define IPictureDisp_QueryInterface(p,a,b)      ICOM_CALL2(QueryInterface,p,a,b)
+#define IPictureDisp_AddRef(p)                  ICOM_CALL (AddRef,p)
+#define IPictureDisp_Release(p)                 ICOM_CALL (Release,p)
+/*** IDispatch methods ***/
+#define IPictureDisp_GetTypeInfoCount(p,a)      ICOM_CALL1 (GetTypeInfoCount,p,a)
+#define IPictureDisp_GetTypeInfo(p,a,b,c)       ICOM_CALL3 (GetTypeInfo,p,b,c)
+#define IPictureDisp_GetIDsOfNames(p,a,b,c,d,e) ICOM_CALL5 (GetIDsOfNames,p,a,b,c,d,e)
+#define IPictureDisp_Invoke(p,a,b,c,d,e,f,g,h)  ICOM_CALL8 (Invoke,p,a,b,c,d,e,f,g,h)
+/*** IPictureDisp methods ***/
+#endif
+
+
 
 #endif /* __WINE_WINE_OBJ_PICTURE_H */
 
diff --git a/include/wine/obj_shelllink.h b/include/wine/obj_shelllink.h
index d31f268..144e1dd 100644
--- a/include/wine/obj_shelllink.h
+++ b/include/wine/obj_shelllink.h
@@ -16,6 +16,7 @@
  */
 DEFINE_SHLGUID(IID_IShellLink,          0x000214EEL, 0, 0);
 typedef struct IShellLink IShellLink,*LPSHELLLINK;
+#define IShellLinkA IShellLink
 
 DEFINE_SHLGUID(IID_IShellLinkW,         0x000214F9L, 0, 0);
 typedef struct IShellLinkW IShellLinkW,*LPSHELLLINKW;
diff --git a/include/wine/obj_storage.h b/include/wine/obj_storage.h
index fb28174..9c8f74d 100644
--- a/include/wine/obj_storage.h
+++ b/include/wine/obj_storage.h
@@ -12,11 +12,38 @@
 /*****************************************************************************
  * Predeclare the structures
  */
+typedef enum tagLOCKTYPE
+{
+	LOCK_WRITE = 1,
+	LOCK_EXCLUSIVE = 2,
+	LOCK_ONLYONCE = 4
+} LOCKTYPE;
+
+typedef struct tagStorageLayout
+{
+    DWORD LayoutType;
+    OLECHAR16* pwcsElementName;
+    LARGE_INTEGER cOffset;
+    LARGE_INTEGER cBytes;
+} StorageLayout;
+
+typedef struct tagSTATSTG {
+    LPOLESTR	pwcsName;
+    DWORD	type;
+    ULARGE_INTEGER cbSize;
+    FILETIME	mtime;
+    FILETIME	ctime;
+    FILETIME	atime;
+    DWORD	grfMode;
+    DWORD	grfLocksSupported;
+    CLSID	clsid;
+    DWORD	grfStateBits;
+    DWORD	reserved;
+} STATSTG;
+
 typedef LPOLESTR16 *SNB16;
 typedef LPOLESTR *SNB;
 
-typedef struct STATSTG STATSTG;
-
 
 /*****************************************************************************
  * Predeclare the interfaces
@@ -112,24 +139,6 @@
 #define STREAM_SEEK_END 2
 
 /*****************************************************************************
- * STATSTG structure
- */
-struct STATSTG {
-    LPOLESTR16	pwcsName;
-    DWORD	type;
-    ULARGE_INTEGER cbSize;
-    FILETIME	mtime;
-    FILETIME	ctime;
-    FILETIME	atime;
-    DWORD	grfMode;
-    DWORD	grfLocksSupported;
-    CLSID	clsid;
-    DWORD	grfStateBits;
-    DWORD	reserved;
-};
-
-
-/*****************************************************************************
  * IEnumSTATSTG interface
  */
 #define ICOM_INTERFACE IEnumSTATSTG
@@ -188,14 +197,6 @@
 /*****************************************************************************
  * ILayoutStorage interface
  */
-typedef struct tagStorageLayout
-{
-    DWORD LayoutType;
-    OLECHAR16* pwcsElementName;
-    LARGE_INTEGER cOffset;
-    LARGE_INTEGER cBytes;
-} StorageLayout;
-
 #define ICOM_INTERFACE ILayoutStorage
 #define ILayoutStorage_METHODS \
     ICOM_METHOD2(HRESULT,LayoutScript,                DWORD,nEntries, DWORD,glfInterleavedFlag) \
@@ -448,18 +449,18 @@
  */
 #define ICOM_INTERFACE IStorage16
 #define IStorage16_METHODS \
-    ICOM_METHOD5(HRESULT,CreateStream,   LPCOLESTR16,pwcsName, DWORD,grfMode, DWORD,reserved1, DWORD,reserved2, IStream16**,ppstm) \
-    ICOM_METHOD5(HRESULT,OpenStream,     LPCOLESTR16,pwcsName, void*,reserved1, DWORD,grfMode, DWORD,reserved2, IStream16**,ppstm) \
-    ICOM_METHOD5(HRESULT,CreateStorage,  LPCOLESTR16,pwcsName, DWORD,grfMode, DWORD,dwStgFmt, DWORD,reserved2, IStorage16**,ppstg) \
-    ICOM_METHOD6(HRESULT,OpenStorage,    LPCOLESTR16,pwcsName, IStorage16*,pstgPriority, DWORD,grfMode, SNB16,snb16Exclude, DWORD,reserved, IStorage16**,ppstg) \
+    ICOM_METHOD5(HRESULT,CreateStream,   OLECHAR*,pwcsName, DWORD,grfMode, DWORD,reserved1, DWORD,reserved2, IStream16**,ppstm) \
+    ICOM_METHOD5(HRESULT,OpenStream,     OLECHAR*,pwcsName, void*,reserved1, DWORD,grfMode, DWORD,reserved2, IStream16**,ppstm) \
+    ICOM_METHOD5(HRESULT,CreateStorage,  OLECHAR*,pwcsName, DWORD,grfMode, DWORD,dwStgFmt, DWORD,reserved2, IStorage16**,ppstg) \
+    ICOM_METHOD6(HRESULT,OpenStorage,    OLECHAR*,pwcsName, IStorage16*,pstgPriority, DWORD,grfMode, SNB16,snb16Exclude, DWORD,reserved, IStorage16**,ppstg) \
     ICOM_METHOD4(HRESULT,CopyTo,         DWORD,ciidExclude, const IID*,rgiidExclude, SNB16,snb16Exclude, IStorage16*,pstgDest) \
     ICOM_METHOD4(HRESULT,MoveElementTo,  LPCOLESTR16,pwcsName, IStorage16*,pstgDest, LPCOLESTR16,pwcsNewName, DWORD,grfFlags) \
     ICOM_METHOD1(HRESULT,Commit,         DWORD,grfCommitFlags) \
     ICOM_METHOD (HRESULT,Revert) \
     ICOM_METHOD4(HRESULT,EnumElements,   DWORD,reserved1, void*,reserved2, DWORD,reserved3, IEnumSTATSTG**,ppenum) \
-    ICOM_METHOD1(HRESULT,DestroyElement, LPCOLESTR16,pwcsName) \
-    ICOM_METHOD2(HRESULT,RenameElement,  LPCOLESTR16,pwcsOldName, LPCOLESTR16,pwcsNewName) \
-    ICOM_METHOD4(HRESULT,SetElementTimes,LPCOLESTR16,pwcsName, const FILETIME*,pctime, const FILETIME*,patime, const FILETIME*,pmtime) \
+    ICOM_METHOD1(HRESULT,DestroyElement, OLECHAR*,pwcsName) \
+    ICOM_METHOD2(HRESULT,RenameElement,  OLECHAR*,pwcsOldName, OLECHAR*,pwcsNewName) \
+    ICOM_METHOD4(HRESULT,SetElementTimes,OLECHAR*,pwcsName, const FILETIME*,pctime, const FILETIME*,patime, const FILETIME*,pmtime) \
     ICOM_METHOD1(HRESULT,SetClass,       REFCLSID,clsid) \
     ICOM_METHOD2(HRESULT,SetStateBits,   DWORD,grfStateBits, DWORD,grfMask) \
     ICOM_METHOD2(HRESULT,Stat,           STATSTG*,pstatstg, DWORD,grfStatFlag)
diff --git a/include/winerror.h b/include/winerror.h
index 8cad5aa..ae27c22 100644
--- a/include/winerror.h
+++ b/include/winerror.h
@@ -4,8 +4,17 @@
 
 extern int WIN32_LastError;
 
+#define FACILITY_NULL      0
+#define FACILITY_RPC       1
+#define FACILITY_DISPATCH  2
+#define FACILITY_STORAGE   3
 #define FACILITY_ITF		4
 #define FACILITY_WIN32		7
+#define FACILITY_WINDOWS   8
+#define FACILITY_SSPI      9
+#define FACILITY_CONTROL   10
+#define FACILITY_CERT      11
+#define FACILITY_INTERNET  12
 
 #define SEVERITY_ERROR		1
 
@@ -17,6 +26,12 @@
 #define SUCCEEDED(stat) ((HRESULT)(stat)>=0)
 #define FAILED(stat) ((HRESULT)(stat)<0)
 
+#define HRESULT_CODE(hr) ((hr) & 0xFFFF)
+#define SCODE_CODE(sc)   ((sc) & 0xFFFF)
+
+#define HRESULT_FACILITY(hr)  (((hr) >> 16) & 0x1FFF)
+#define SCODE_FACILITY(sc)  (((sc) >> 16) & 0x1FFF)
+
 /* ERROR_UNKNOWN is a placeholder for error conditions which haven't
  * been tested yet so we're not exactly sure what will be returned.
  * All instances of ERROR_UNKNOWN should be tested under Win95/NT
@@ -251,14 +266,23 @@
 #define S_OK                                   ((HRESULT)0L)
 #define S_FALSE                                ((HRESULT)1L)
 
+#define DISP_E_UNKNOWNINTERFACE 0x80020001L
+#define DISP_E_MEMBERNOTFOUND   0x80020003L
+#define DISP_E_PARAMNOTFOUND    0x80020004L
+#define DISP_E_TYPEMISMATCH     0x80020005L
+#define DISP_E_UNKNOWNNAME      0x80020006L
+#define DISP_E_NONAMEDARGS      0x80020007L
 #define DISP_E_BADVARTYPE   0x80020008L
+#define DISP_E_EXCEPTION        0x80020009L
 #define DISP_E_OVERFLOW     0x8002000AL
-#define DISP_E_TYPEMISMATCH 0x80020005L
-#define DISP_E_ARRAYISLOCKED  0x8002000D
-#define DISP_E_BADINDEX       0x8002000B
-#define DISP_E_MEMBERNOTFOUND            0x80020003L
+#define DISP_E_BADINDEX         0x8002000BL
+#define DISP_E_UNKNOWNLCID      0x8002000CL
+#define DISP_E_ARRAYISLOCKED    0x8002000DL
+#define DISP_E_BADPARAMCOUNT    0x8002000EL
+#define DISP_E_PARAMNOTOPTIONAL 0x8002000FL
 
 #define TYPE_E_ELEMENTNOTFOUND           0x8002802BL
+#define TYPE_E_CANTLOADLIBRARY  0x80029C4AL
 
 
 /* Drag and Drop */
@@ -293,14 +317,22 @@
 
 #define CO_E_OBJISREG                   0x800401FB
 #define	OLE_E_ENUM_NOMORE		      0x80040002
+#define	OLE_E_ADVISENOTSUPPORTED  0x80040003
+#define	OLE_E_NOCONNECTION        0x80040004
+#define	OLE_E_NOTRUNNING          0x80040005
+#define	OLE_E_NOCACHE             0x80040006
+#define	OLE_E_BLANK		            0x80040007
+#define	OLE_E_NOT_INPLACEACTIVE		0x80040010
+#define	OLE_E_STATIC              0x8004000B
+#define	OLE_E_PROMPTSAVECANCELLED 0x8004000C
 #define OLE_S_USEREG                            0x00040000
-#define CLASS_E_NOAGGREGATION     0x80040110
-#define	CLASS_E_CLASSNOTAVAILABLE	0x80040111
+#define DV_E_FORMATETC            0x80040064
+#define DV_E_DVASPECT             0x8004006B
+#define DATA_S_SAMEFORMATETC      0x80040130
 #define E_ACCESSDENIED			      0x80070005
 #define E_HANDLE            			0x80070006
 #define	E_OUTOFMEMORY			        0x8007000E
 #define	E_INVALIDARG			        0x80070057
-
 /*#define OLE_E_FIRST 0x80040000L */
 /*#define OLE_E_LAST  0x800400FFL */
 /*#define OLE_S_FIRST 0x00040000L */
@@ -359,4 +391,27 @@
 #define REGDB_E_READREGDB               0x80040150
 #define REGDB_E_CLASSNOTREG             0x80040154
 
+#define INPLACE_E_NOTUNDOABLE           0x800401A0
+#define INPLACE_E_NOTOOLSPACE           0x800401A1
+
+#define DATA_E_FORMATETC                DV_E_FORMATETC
+
+#define CLASSFACTORY_E_FIRST            0x80040110L
+#define CLASSFACTORY_E_LAST             0x8004011FL
+#define CLASSFACTORY_S_FIRST            0x80040110L
+#define CLASSFACTORY_S_LAST             0x8004011FL
+
+#define CLASS_E_NOTLICENSED             (CLASSFACTORY_E_FIRST+2)
+#define CLASS_E_NOAGGREGATION           0x80040110
+#define	CLASS_E_CLASSNOTAVAILABLE	      0x80040111
+
+#define MK_E_EXCEEDEDDEADLINE           0x800401E1L
+#define MK_E_SYNTAX                     0x800401E4L
+#define MK_E_NOOBJECT                   0x800401E5L
+#define MK_E_INVALIDEXTENSION           0x800401E6L
+#define MK_E_NOSTORAGE                  0x800401EDL
+
+#define OLEOBJ_E_NOVERBS                0x00040180L
+#define OLEOBJ_S_INVALIDVERB            0x00040180L
+
 #endif  /* __WINE_WINERROR_H */
diff --git a/include/wingdi.h b/include/wingdi.h
index aded9f2..1492913 100644
--- a/include/wingdi.h
+++ b/include/wingdi.h
@@ -7,6 +7,8 @@
 extern "C" {
 #endif
 
+#define _WINGDI_
+
 #pragma pack(1)
 
 typedef struct _ABCFLOAT {
@@ -1140,6 +1142,26 @@
     INT16   value;
 } FIXED;
 
+typedef struct tagPOINTFX
+{
+	FIXED x;
+	FIXED y;
+} POINTFX, *LPPOINTFX;
+
+typedef struct tagTTPOLYCURVE
+{
+	WORD wType;
+	WORD cpfx;
+	POINTFX apfx[1];
+} TTPOLYCURVE, *LPTTPOLYCURVE;
+
+typedef struct tagTTPOLYGONHEADER
+{
+	DWORD cb;
+	DWORD dwType;
+	POINTFX pfxStart;
+} TTPOLYGONHEADER, *LPTTPOLYGONHEADER;
+
 typedef struct
 {
      FIXED  eM11;
diff --git a/include/winsock.h b/include/winsock.h
index 852745d..38b88a5 100644
--- a/include/winsock.h
+++ b/include/winsock.h
@@ -227,6 +227,8 @@
  * Socket I/O flags (supported by spec 1.1)
  */
 
+#define FIONREAD       WS_FIONREAD
+#define FIONBIO        WS_FIONBIO
 #define WS_FIONREAD    WS_IOR('f', 127, u_long)
 #define WS_FIONBIO     WS_IOW('f', 126, u_long)
 
@@ -253,6 +255,12 @@
 /*
  * Define flags to be used with the WSAAsyncSelect() call.
  */
+#define FD_READ            WS_FD_READ
+#define FD_WRITE           WS_FD_WRITE
+#define FD_OOB             WS_FD_OOB
+#define FD_ACCEPT          WS_FD_ACCEPT
+#define FD_CONNECT         WS_FD_CONNECT
+#define FD_CLOSE           WS_FD_CLOSE
 #define WS_FD_READ         0x0001
 #define WS_FD_WRITE        0x0002
 #define WS_FD_OOB          0x0004
diff --git a/include/winuser.h b/include/winuser.h
index 0e4d998..6078ff0 100644
--- a/include/winuser.h
+++ b/include/winuser.h
@@ -79,6 +79,17 @@
     INT       code;
 } DEBUGHOOKINFO, *LPDEBUGHOOKINFO;
 
+#define HKL_PREV   0
+#define HKL_NEXT   1
+
+#define KLF_ACTIVATE       0x00000001
+#define KLF_SUBSTITUTE_OK  0x00000002
+#define KLF_UNLOADPREVIOUS 0x00000004
+#define KLF_REORDER        0x00000008
+#define KLF_REPLACELANG    0x00000010
+#define KLF_NOTELLSHELL    0x00000080
+
+#define KL_NAMELENGTH      9
 
   /***** Dialogs *****/
 #ifdef FSHIFT
diff --git a/include/wtypes.h b/include/wtypes.h
index bc0a8c8..537e92b 100644
--- a/include/wtypes.h
+++ b/include/wtypes.h
@@ -33,6 +33,9 @@
 typedef BSTR16		*LPBSTR16;
 typedef BSTR		*LPBSTR;
 
+#define OLESTR16(x) x
+#define OLESTR(x) L##x
+
 #ifndef GUID_DEFINED
 #define GUID_DEFINED
 typedef struct _GUID
@@ -71,6 +74,14 @@
        DVASPECT_DOCPRINT  = 8
 } DVASPECT;
 
+typedef enum tagSTGC
+{
+	STGC_DEFAULT = 0,
+	STGC_OVERWRITE = 1,
+	STGC_ONLYIFCURRENT = 2,
+	STGC_DANGEROUSLYCOMMITMERELYTODISKCACHE = 4
+} STGC;
+
 #define DECLARE_HANDLE(a)  typedef HANDLE16 a##16; typedef HANDLE a
 DECLARE_HANDLE(HMETAFILEPICT);
 #undef DECLARE_HANDLE
diff --git a/ole/ole2.c b/ole/ole2.c
index 3b76ccb..9f05278 100644
--- a/ole/ole2.c
+++ b/ole/ole2.c
@@ -13,6 +13,7 @@
 #include "process.h"
 #include "wine/obj_clientserver.h"
 #include "debug.h"
+#include "ole2ver.h"
 
 /******************************************************************************
  * These are static/global variables and internal data structures that the 
@@ -474,10 +475,11 @@
 /***********************************************************************
  * OleDestroyMenuDescriptor [OLE32.99]
  */
-void WINAPI OleDestroyMenuDescriptor(
+HRESULT WINAPI OleDestroyMenuDescriptor(
   HOLEMENU hmenuDescriptor)
 {
   FIXME(ole,"(%x),stub!\n", (unsigned int)hmenuDescriptor);
+	return S_OK;
 }
 
 /***********************************************************************
diff --git a/ole/olefont.c b/ole/olefont.c
index 77d6318..f8dd98f 100644
--- a/ole/olefont.c
+++ b/ole/olefont.c
@@ -313,7 +313,7 @@
   newObject->description.sCharset       = fontDesc->sCharset;
   newObject->description.fItalic        = fontDesc->fItalic;
   newObject->description.fUnderline     = fontDesc->fUnderline;
-  newObject->description.fStrikeThrough = fontDesc->fStrikeThrough;
+  newObject->description.fStrikethrough = fontDesc->fStrikethrough;
 
   /*
    * Initializing all the other members.
@@ -676,7 +676,7 @@
   if (pstrikethrough==0)
     return E_POINTER;
 
-  *pstrikethrough = this->description.fStrikeThrough;
+  *pstrikethrough = this->description.fStrikethrough;
 
   return S_OK;
 }
@@ -692,7 +692,7 @@
 {
   _ICOM_THIS(OLEFontImpl, iface);
 
-  this->description.fStrikeThrough = strikethrough;
+  this->description.fStrikethrough = strikethrough;
 
   return S_OK;
 }
@@ -813,7 +813,7 @@
                                                               (-fontHeight/10000L);
     logFont.lfItalic          = this->description.fItalic;
     logFont.lfUnderline       = this->description.fUnderline;
-    logFont.lfStrikeOut       = this->description.fStrikeThrough;
+    logFont.lfStrikeOut       = this->description.fStrikethrough;
     logFont.lfWeight          = this->description.sWeight;
     logFont.lfCharSet         = this->description.sCharset;
     logFont.lfOutPrecision    = OUT_CHARACTER_PRECIS;
@@ -1212,7 +1212,7 @@
     return E_FAIL;
 
   this->description.fItalic        = (bAttributes & FONTPERSIST_ITALIC) != 0;
-  this->description.fStrikeThrough = (bAttributes & FONTPERSIST_STRIKETHROUGH) != 0;
+  this->description.fStrikethrough = (bAttributes & FONTPERSIST_STRIKETHROUGH) != 0;
   this->description.fUnderline     = (bAttributes & FONTPERSIST_UNDERLINE) != 0;
     
   /*
@@ -1299,7 +1299,7 @@
   if (this->description.fItalic)
     bAttributes |= FONTPERSIST_ITALIC;
 
-  if (this->description.fStrikeThrough)
+  if (this->description.fStrikethrough)
     bAttributes |= FONTPERSIST_STRIKETHROUGH;
   
   if (this->description.fUnderline)