diff --git a/dlls/commdlg/colordlg.c b/dlls/commdlg/colordlg.c
index a58b2b1..f050d47 100644
--- a/dlls/commdlg/colordlg.c
+++ b/dlls/commdlg/colordlg.c
@@ -873,7 +873,7 @@
    for (i=0x2bf;i<0x2c5;i++)
      SendMessage16(GetDlgItem(hDlg,i),EM_LIMITTEXT16,3,0);      /* max 3 digits:  xyz  */
    if (CC_HookCallChk(lpp->lpcc))
-      res=CallWindowProc16(lpp->lpcc->lpfnHook,hDlg,WM_INITDIALOG,wParam,lParam);
+      res=CallWindowProc16((WNDPROC16)lpp->lpcc->lpfnHook,hDlg,WM_INITDIALOG,wParam,lParam);
 
    
    /* Set the initial values of the color chooser dialog */
@@ -1006,7 +1006,7 @@
 	       if (lpp->lpcc->hwndOwner)
 		   SendMessage16(lpp->lpcc->hwndOwner,i,0,(LPARAM)lpp->lpcc);
 	       if (CC_HookCallChk(lpp->lpcc))
-		   CallWindowProc16(lpp->lpcc->lpfnHook,hDlg,
+		   CallWindowProc16((WNDPROC16)lpp->lpcc->lpfnHook,hDlg,
 		      WM_COMMAND,psh15,(LPARAM)lpp->lpcc);
 	       break;
 
@@ -1121,7 +1121,7 @@
      return FALSE;
   res=0;
   if (CC_HookCallChk(lpp->lpcc))
-     res=CallWindowProc16(lpp->lpcc->lpfnHook,hDlg,message,wParam,lParam);
+     res=CallWindowProc16((WNDPROC16)lpp->lpcc->lpfnHook,hDlg,message,wParam,lParam);
   if (res)
      return res;
  }
@@ -1186,7 +1186,7 @@
   lpcc16->lpCustColors=(COLORREF*)SEGPTR_GET(ccref);
   lpcc16->Flags=lpChCol->Flags;
   lpcc16->lCustData=lpChCol->lCustData;
-  lpcc16->lpfnHook=(WNDPROC16)lpChCol->lpfnHook;
+  lpcc16->lpfnHook=(LPCCHOOKPROC16)lpChCol->lpfnHook;
   if (lpChCol->lpTemplateName)
     str = SEGPTR_STRDUP(lpChCol->lpTemplateName );
   lpcc16->lpTemplateName=SEGPTR_GET(str);
@@ -1224,7 +1224,7 @@
   lpcc16->lpCustColors=(COLORREF*)SEGPTR_GET(ccref);
   lpcc16->Flags=lpChCol->Flags;
   lpcc16->lCustData=lpChCol->lCustData;
-  lpcc16->lpfnHook=(WNDPROC16)lpChCol->lpfnHook;
+  lpcc16->lpfnHook=(LPCCHOOKPROC16)lpChCol->lpfnHook;
   if (lpChCol->lpTemplateName)
     str = SEGPTR_STRDUP_WtoA(lpChCol->lpTemplateName );
   lpcc16->lpTemplateName=SEGPTR_GET(str);
diff --git a/dlls/commdlg/filedlg.c b/dlls/commdlg/filedlg.c
index a58a6f5..9a67484 100644
--- a/dlls/commdlg/filedlg.c
+++ b/dlls/commdlg/filedlg.c
@@ -634,7 +634,7 @@
 	if (!(lpofn->Flags & OFN_WINE))
                 /* Call to 16-Bit Hooking function... No Problem at all. */
 		return (BOOL)CallWindowProc16(
-			lpofn->lpfnHook,hwnd,(UINT16)wMsg,(WPARAM16)wParam,lParam
+			(WNDPROC16)lpofn->lpfnHook,hwnd,(UINT16)wMsg,(WPARAM16)wParam,lParam
 		);
 	/* |OFN_WINE32 */
         if (needstruct)
@@ -665,7 +665,7 @@
         {
                 HWINDOWPROC     hWindowProc=NULL;
 
-                if (WINPROC_SetProc(&hWindowProc, lpofn->lpfnHook, ProcType, WIN_PROC_WINDOW))
+                if (WINPROC_SetProc(&hWindowProc, (WNDPROC16)lpofn->lpfnHook, ProcType, WIN_PROC_WINDOW))
                 {
                     /* Call Window Procedure converting 16-Bit Type Parameters to 32-Bit Type Parameters */
                     result = CallWindowProc16( (WNDPROC16)hWindowProc,
@@ -1127,7 +1127,7 @@
 	if (ofn->lpstrDefExt)
 	    ofn16->lpstrDefExt = SEGPTR_GET(SEGPTR_STRDUP(ofn->lpstrDefExt));
 	ofn16->lCustData = ofn->lCustData;
-	ofn16->lpfnHook = (WNDPROC16)ofn->lpfnHook;
+	ofn16->lpfnHook = (LPOFNHOOKPROC16)ofn->lpfnHook;
 
 	if (ofn->lpTemplateName)
 	    ofn16->lpTemplateName = SEGPTR_GET(SEGPTR_STRDUP(ofn->lpTemplateName));
@@ -1236,7 +1236,7 @@
 	if (ofn->lpstrDefExt)
 		ofn16->lpstrDefExt = SEGPTR_GET(SEGPTR_STRDUP_WtoA(ofn->lpstrDefExt));
 	ofn16->lCustData = ofn->lCustData;
-	ofn16->lpfnHook = (WNDPROC16)ofn->lpfnHook;
+	ofn16->lpfnHook = (LPOFNHOOKPROC16)ofn->lpfnHook;
 	if (ofn->lpTemplateName) 
 		ofn16->lpTemplateName = SEGPTR_GET(SEGPTR_STRDUP_WtoA(ofn->lpTemplateName));
 	ret = dofunction(SEGPTR_GET(ofn16));
diff --git a/dlls/commdlg/fontdlg.c b/dlls/commdlg/fontdlg.c
index 2b46548..5107219 100644
--- a/dlls/commdlg/fontdlg.c
+++ b/dlls/commdlg/fontdlg.c
@@ -874,7 +874,7 @@
    if (!lpcf)
       return FALSE;
    if (CFn_HookCallChk(lpcf))
-     res=CallWindowProc16(lpcf->lpfnHook,hDlg,message,wParam,lParam);
+     res=CallWindowProc16((WNDPROC16)lpcf->lpfnHook,hDlg,message,wParam,lParam);
    if (res)
     return res;
   }
@@ -888,7 +888,7 @@
       return FALSE;
     }  
     if (CFn_HookCallChk(lpcf))
-      return CallWindowProc16(lpcf->lpfnHook,hDlg,WM_INITDIALOG,wParam,lParam);
+      return CallWindowProc16((WNDPROC16)lpcf->lpfnHook,hDlg,WM_INITDIALOG,wParam,lParam);
   }
   WINPROC_MapMsg16To32A(message, wParam, &uMsg32, &wParam32, &lParam);
   lpcf32a=(LPCHOOSEFONTA)lpcf->lpTemplateName;
@@ -933,7 +933,7 @@
    if (!lpcf)
      return FALSE;
    if (CFn_HookCallChk32(lpcf))
-     res=CallWindowProcA(lpcf->lpfnHook, hDlg, uMsg, wParam, lParam);
+     res=CallWindowProcA((WNDPROC)lpcf->lpfnHook, hDlg, uMsg, wParam, lParam);
    if (res)
      return res;
   }
@@ -946,7 +946,7 @@
       return FALSE;
     }  
     if (CFn_HookCallChk32(lpcf))
-      return CallWindowProcA(lpcf->lpfnHook,hDlg,WM_INITDIALOG,wParam,lParam);
+      return CallWindowProcA((WNDPROC)lpcf->lpfnHook,hDlg,WM_INITDIALOG,wParam,lParam);
   }
   switch (uMsg)
     {
@@ -984,7 +984,7 @@
    if (!lpcf32w)
      return FALSE;
    if (CFn_HookCallChk32((LPCHOOSEFONTA)lpcf32w))
-     res=CallWindowProcW(lpcf32w->lpfnHook, hDlg, uMsg, wParam, lParam);
+     res=CallWindowProcW((WNDPROC)lpcf32w->lpfnHook, hDlg, uMsg, wParam, lParam);
    if (res)
      return res;
   }
@@ -998,7 +998,7 @@
       return FALSE;
     }  
     if (CFn_HookCallChk32((LPCHOOSEFONTA)lpcf32w))
-      return CallWindowProcW(lpcf32w->lpfnHook,hDlg,WM_INITDIALOG,wParam,lParam);
+      return CallWindowProcW((WNDPROC)lpcf32w->lpfnHook,hDlg,WM_INITDIALOG,wParam,lParam);
   }
   lpcf32a=(LPCHOOSEFONTA)lpcf32w->lpTemplateName;
   switch (uMsg)
diff --git a/include/commdlg.h b/include/commdlg.h
index 7d26b49..e20add7 100644
--- a/include/commdlg.h
+++ b/include/commdlg.h
@@ -44,6 +44,9 @@
 #define OFN_SHARENOWARN          1
 #define OFN_SHAREWARN            0
 
+typedef UINT16 (*LPOFNHOOKPROC16)(HWND16,UINT16,WPARAM16,LPARAM);
+typedef UINT (*LPOFNHOOKPROC)(HWND,UINT,WPARAM,LPARAM);
+
 typedef struct {
 	DWORD		lStructSize;
 	HWND16		hwndOwner;
@@ -63,7 +66,7 @@
 	UINT16		nFileExtension;
 	SEGPTR		lpstrDefExt;
 	LPARAM 		lCustData;
-        WNDPROC16       lpfnHook;
+	LPOFNHOOKPROC16 lpfnHook;
 	SEGPTR 		lpTemplateName;
 }   OPENFILENAME16,*LPOPENFILENAME16;
 
@@ -86,7 +89,7 @@
 	WORD		nFileExtension;
 	LPCSTR		lpstrDefExt;
 	LPARAM		lCustData;
-	WNDPROC	lpfnHook;
+	LPOFNHOOKPROC	lpfnHook;
 	LPCSTR		lpTemplateName;
 } OPENFILENAMEA,*LPOPENFILENAMEA;
 
@@ -109,7 +112,7 @@
 	WORD		nFileExtension;
 	LPCWSTR		lpstrDefExt;
 	LPARAM		lCustData;
-	WNDPROC	lpfnHook;
+	LPOFNHOOKPROC	lpfnHook;
 	LPCWSTR		lpTemplateName;
 } OPENFILENAMEW,*LPOPENFILENAMEW;
 
@@ -133,6 +136,7 @@
 DECL_WINELIB_TYPE_AW(OFNOTIFY)
 DECL_WINELIB_TYPE_AW(LPOFNOTIFY)
  
+typedef UINT16 (CALLBACK *LPCCHOOKPROC16) (HWND16, UINT16, WPARAM16, LPARAM);
 typedef UINT (CALLBACK *LPCCHOOKPROC) (HWND, UINT, WPARAM, LPARAM);
 
 typedef struct {
@@ -143,7 +147,7 @@
 	COLORREF       *lpCustColors;
 	DWORD 		Flags;
 	LPARAM		lCustData;
-        WNDPROC16       lpfnHook;
+        LPCCHOOKPROC16  lpfnHook;
 	SEGPTR 		lpTemplateName;
 } CHOOSECOLOR16;
 typedef CHOOSECOLOR16 *LPCHOOSECOLOR16;
@@ -186,6 +190,9 @@
 #define CC_ENABLETEMPLATE        0x00000020
 #define CC_ENABLETEMPLATEHANDLE  0x00000040
 
+typedef UINT16 (*LPFRHOOKPROC16)(HWND16,UINT16,WPARAM16,LPARAM);
+typedef UINT (*LPFRHOOKPROC)(HWND,UINT,WPARAM,LPARAM);
+
 typedef struct {
 	DWORD		lStructSize; 			/* size of this struct 0x20 */
 	HWND16		hwndOwner; 				/* handle to owner's window */
@@ -197,7 +204,7 @@
 	UINT16		wFindWhatLen;           /* size of find buffer      */
 	UINT16 		wReplaceWithLen;        /* size of replace buffer   */
 	LPARAM 		lCustData;              /* data passed to hook fn.  */
-        WNDPROC16       lpfnHook;
+        LPFRHOOKPROC16  lpfnHook;
 	SEGPTR 		lpTemplateName;         /* custom template name     */
 	} FINDREPLACE16, *LPFINDREPLACE16;
 
@@ -212,7 +219,7 @@
 	WORD		wFindWhatLen;
 	WORD 		wReplaceWithLen;
 	LPARAM 		lCustData;
-        WNDPROC       lpfnHook;
+        LPFRHOOKPROC    lpfnHook;
 	LPCSTR 		lpTemplateName;
 	} FINDREPLACEA, *LPFINDREPLACEA;
 
@@ -227,7 +234,7 @@
 	WORD		wFindWhatLen;
 	WORD 		wReplaceWithLen;
 	LPARAM 		lCustData;
-        WNDPROC       lpfnHook;
+        LPFRHOOKPROC    lpfnHook;
 	LPCWSTR		lpTemplateName;
 	} FINDREPLACEW, *LPFINDREPLACEW;
 	
@@ -252,6 +259,9 @@
 #define FR_HIDEMATCHCASE                0x00008000
 #define FR_HIDEWHOLEWORD                0x00010000
 
+typedef UINT16 (*LPCFHOOKPROC16)(HWND16,UINT16,WPARAM16,LPARAM);
+typedef UINT (*LPCFHOOKPROC)(HWND,UINT,WPARAM,LPARAM);
+
 typedef struct 
 {
 	DWORD			lStructSize;
@@ -262,7 +272,7 @@
 	DWORD			Flags;  /* enum. type flags         */
 	COLORREF		rgbColors;          /* returned text color      */
 	LPARAM	                lCustData;          /* data passed to hook fn.  */
-        WNDPROC16               lpfnHook;
+	LPCFHOOKPROC16          lpfnHook;
 	SEGPTR			lpTemplateName;     /* custom template name     */
 	HINSTANCE16		hInstance;          /* instance handle of.EXE that   */
 							/* contains cust. dlg. template  */
@@ -287,7 +297,7 @@
 	DWORD		Flags; 
 	COLORREF	rgbColors; 
 	LPARAM		lCustData; 
-	WNDPROC 	lpfnHook; 
+	LPCFHOOKPROC 	lpfnHook; 
 	LPCSTR		lpTemplateName; 
 	HINSTANCE	hInstance; 
 	LPSTR		lpszStyle; 
@@ -307,7 +317,7 @@
 	DWORD		Flags; 
 	COLORREF	rgbColors; 
 	LPARAM		lCustData; 
-	WNDPROC 	lpfnHook; 
+	LPCFHOOKPROC 	lpfnHook; 
 	LPCWSTR		lpTemplateName; 
 	HINSTANCE	hInstance; 
 	LPWSTR		lpszStyle; 
@@ -395,6 +405,12 @@
 #define CDM_HIDECONTROL         (CDM_FIRST + 0x0005)
 #define CDM_SETDEFEXT           (CDM_FIRST + 0x0006)
 
+typedef UINT16 (CALLBACK *LPPRINTHOOKPROC16) (HWND16, UINT16, WPARAM16, LPARAM);
+typedef UINT (CALLBACK *LPPRINTHOOKPROC) (HWND, UINT, WPARAM, LPARAM);
+
+typedef UINT16 (CALLBACK *LPSETUPHOOKPROC16) (HWND16, UINT16, WPARAM16, LPARAM);
+typedef UINT (CALLBACK *LPSETUPHOOKPROC) (HWND, UINT, WPARAM, LPARAM);
+
 typedef struct
 {
     DWORD            lStructSize;
@@ -410,17 +426,14 @@
     WORD             nCopies;
     HINSTANCE16      hInstance;
     LPARAM           lCustData;
-    WNDPROC16        lpfnPrintHook;
-    WNDPROC16        lpfnSetupHook;
+    LPPRINTHOOKPROC16 lpfnPrintHook;
+    LPSETUPHOOKPROC16 lpfnSetupHook;
     SEGPTR           lpPrintTemplateName;
     SEGPTR           lpSetupTemplateName;
     HGLOBAL16        hPrintTemplate;
     HGLOBAL16        hSetupTemplate;
 } PRINTDLG16, *LPPRINTDLG16;
 
-typedef UINT (CALLBACK *LPPRINTHOOKPROC) (HWND, UINT, WPARAM, LPARAM);
-typedef UINT (CALLBACK *LPSETUPHOOKPROC) (HWND, UINT, WPARAM, LPARAM);
-
 typedef struct tagPDA
 {
     DWORD            lStructSize;
@@ -493,17 +506,6 @@
 #define PD_DISABLEPRINTTOFILE        0x00080000
 #define PD_HIDEPRINTTOFILE           0x00100000
 
-typedef enum __MIDL_IPrint_0001
-{
-	PRINTFLAG_MAYBOTHERUSER = 1,
-	PRINTFLAG_PROMPTUSER    = 2,
-	PRINTFLAG_USERMAYCHANGEPRINTER  = 4,
-	PRINTFLAG_RECOMPOSETODEVICE     = 8,
-	PRINTFLAG_DONTACTUALLYPRINT     = 16,
-	PRINTFLAG_FORCEPROPERTIES       = 32,
-	PRINTFLAG_PRINTTOFILE   = 64
-} PRINTFLAG;
- 
 typedef struct {
 	UINT16 	wDriverOffset;
 	UINT16 	wDeviceOffset;
diff --git a/include/initguid.h b/include/initguid.h
index e092668..ca326da 100644
--- a/include/initguid.h
+++ b/include/initguid.h
@@ -20,4 +20,6 @@
         const GUID name = \
 	{ l, w1, w2, { b1, b2,  b3,  b4,  b5,  b6,  b7,  b8 } }
 
+DEFINE_GUID(GUID_NULL,   0,0,0,0,0,0,0,0,0,0,0);
+
 #endif 
diff --git a/include/objbase.h b/include/objbase.h
index 1f63640..628e87b 100644
--- a/include/objbase.h
+++ b/include/objbase.h
@@ -1,6 +1,7 @@
 #ifndef __WINE_OBJBASE_H
 #define __WINE_OBJBASE_H
 
+#define _OBJBASE_H_
 
 #include "wine/obj_base.h"
 
@@ -38,6 +39,9 @@
 #define STDAPICALLTYPE          __stdcall
 #define STDAPIVCALLTYPE         __cdecl
 
+#define FARSTRUCT
+#define HUGEP
+
 #define STDAPI                  EXTERN_C HRESULT STDAPICALLTYPE
 #define STDAPI_(type)           EXTERN_C type STDAPICALLTYPE
 
diff --git a/include/ole2.h b/include/ole2.h
index 3047412..14629b7 100644
--- a/include/ole2.h
+++ b/include/ole2.h
@@ -36,7 +36,7 @@
 
 HRESULT WINAPI ReadClassStg(IStorage *pstg,CLSID *pclsid);
 HRESULT WINAPI WriteClassStm(IStream *pStm,REFCLSID rclsid);
-HRESULT WINAPI ReadClassStm(IStream *pStm,REFCLSID pclsid);
+HRESULT WINAPI ReadClassStm(IStream *pStm,CLSID *pclsid);
 
 
 HRESULT     WINAPI OleSave(LPPERSISTSTORAGE pPS, LPSTORAGE pStg, BOOL fSameAsLoad);
diff --git a/include/windef.h b/include/windef.h
index b6057c6..4950e5f 100644
--- a/include/windef.h
+++ b/include/windef.h
@@ -149,7 +149,6 @@
 typedef DWORD           ACCESS_MASK;
 typedef ACCESS_MASK     REGSAM;
 typedef HANDLE          HHOOK;
-typedef HANDLE          HKEY;
 typedef HANDLE          HMONITOR;
 typedef DWORD           LCID;
 typedef WORD            LANGID;
@@ -188,8 +187,6 @@
 typedef INT            *LPINT;
 typedef UINT           *PUINT;
 typedef UINT           *LPUINT;
-typedef HKEY           *LPHKEY;
-typedef HKEY           *PHKEY;
 typedef FLOAT          *PFLOAT;
 typedef FLOAT          *LPFLOAT;
 typedef BOOL           *PBOOL;
@@ -245,6 +242,7 @@
 DECLARE_HANDLE(HFONT);
 DECLARE_HANDLE(HICON);
 DECLARE_HANDLE(HINSTANCE);
+DECLARE_HANDLE(HKEY);
 DECLARE_HANDLE(HMENU);
 DECLARE_HANDLE(HMETAFILE);
 DECLARE_HANDLE(HMIDI);
diff --git a/include/wine/obj_dataobject.h b/include/wine/obj_dataobject.h
index 15d9a4e..8e6432c 100644
--- a/include/wine/obj_dataobject.h
+++ b/include/wine/obj_dataobject.h
@@ -96,6 +96,16 @@
 	TYMED_NULL      = 0
 } TYMED;
   
+typedef struct tagRemSTGMEDIUM
+{
+	DWORD tymed;
+	DWORD dwHandleType;
+	unsigned long pData;
+	unsigned long pUnkForRelease;
+	unsigned long cbData;
+	byte data[1];
+} RemSTGMEDIUM;
+
 /* dataobject as answer to a request */
 struct STGMEDIUM
 {
diff --git a/include/wine/obj_inplace.h b/include/wine/obj_inplace.h
index 0716cd8..bd90d9c 100644
--- a/include/wine/obj_inplace.h
+++ b/include/wine/obj_inplace.h
@@ -93,6 +93,15 @@
 	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;
diff --git a/include/wine/obj_moniker.h b/include/wine/obj_moniker.h
index 9f354b2..f3fd58d 100644
--- a/include/wine/obj_moniker.h
+++ b/include/wine/obj_moniker.h
@@ -340,8 +340,8 @@
 #define IRunningObjectTable_EnumRunning(p,a)           ICOM_CALL1(EnumRunning,p,a)
 #endif
 
-HRESULT WINAPI GetRunningObjectTable(DWORD reserved, LPVOID *pprot);
-HRESULT WINAPI GetRunningObjectTable16(DWORD reserved, LPVOID *pprot);
+HRESULT WINAPI GetRunningObjectTable(DWORD reserved, LPRUNNINGOBJECTTABLE *pprot);
+HRESULT WINAPI GetRunningObjectTable16(DWORD reserved, LPRUNNINGOBJECTTABLE *pprot);
 
 /*****************************************************************************
  * Additional API
diff --git a/include/wine/obj_oleaut.h b/include/wine/obj_oleaut.h
index 5a6a6ef..9b32c39 100644
--- a/include/wine/obj_oleaut.h
+++ b/include/wine/obj_oleaut.h
@@ -201,6 +201,11 @@
 
 #define MEMBERID_NIL DISPID_UNKNOWN
 
+#define IMPLTYPEFLAG_FDEFAULT         (0x1)
+#define IMPLTYPEFLAG_FSOURCE          (0x2)
+#define IMPLTYPEFLAG_FRESTRICTED      (0x4)
+#define IMPLTYPEFLAG_FDEFAULTVTABLE   (0x8)
+
 typedef struct  tagDISPPARAMS
 {
   VARIANTARG* rgvarg;
@@ -560,8 +565,7 @@
 	ICOM_METHOD2(HRESULT,GetFuncDesc, UINT,index, FUNCDESC**,ppFuncDesc) \
 	ICOM_METHOD2(HRESULT,GetVarDesc, UINT,index, VARDESC**,ppVarDesc) \
 	ICOM_METHOD4(HRESULT,GetNames, MEMBERID,memid, BSTR*,rgBstrNames, UINT,cMaxNames, UINT*,pcNames) \
-	ICOM_METHOD2(HRESULT,GetRefTypeOfImplType, UINT,index, HREFTYPE*,\
-		pRefType) \
+	ICOM_METHOD2(HRESULT,GetRefTypeOfImplType, UINT,index, HREFTYPE*, pRefType) \
 	ICOM_METHOD2(HRESULT,GetImplTypeFlags, UINT,index, INT*,pImplTypeFlags)\
 	ICOM_METHOD3(HRESULT,GetIDsOfNames, LPOLESTR*,rgszNames, UINT,cNames, MEMBERID*,pMemId) \
 	ICOM_METHOD7(HRESULT,Invoke, PVOID,pvInstance, MEMBERID,memid, WORD,wFlags, DISPPARAMS*,pDispParams, VARIANT*,pVarResult, EXCEPINFO*,pExcepInfo, UINT*,puArgErr) \
diff --git a/include/wine/obj_oleobj.h b/include/wine/obj_oleobj.h
index c7ab5b3..0ef0f99 100644
--- a/include/wine/obj_oleobj.h
+++ b/include/wine/obj_oleobj.h
@@ -39,7 +39,7 @@
 	OLEMISC_INSIDEOUT = 0x80,
 	OLEMISC_ACTIVATEWHENVISIBLE = 0x100,
 	OLEMISC_RENDERINGISDEVICEINDEPENDENT = 0x200,
-	OLEMISC_INVISABLEATRUNTIME = 0x400,
+	OLEMISC_INVISIBLEATRUNTIME = 0x400,
 	OLEMISC_ALWAYSRUN = 0x800,
 	OLEMISC_ACTSLIKEBUTTON = 0x1000,
 	OLEMISC_ACTSLIKELABEL = 0x2000,
diff --git a/include/winerror.h b/include/winerror.h
index 540cf58..d232779 100644
--- a/include/winerror.h
+++ b/include/winerror.h
@@ -332,6 +332,11 @@
 #define CO_E_ERRORINDLL                 0x800401F9
 #define CO_E_OBJISREG                   0x800401FB
 
+#define OLE_E_FIRST 0x80040000L
+#define OLE_E_LAST  0x800400FFL
+#define OLE_S_FIRST 0x00040000L
+#define OLE_S_LAST  0x000400FFL
+
 #define	OLE_E_ENUM_NOMORE		      0x80040002
 #define	OLE_E_ADVISENOTSUPPORTED  0x80040003
 #define	OLE_E_NOCONNECTION        0x80040004
@@ -451,6 +456,7 @@
 
 
 #define OLEOBJ_E_NOVERBS                0x00040180L
+#define OLEOBJ_E_INVALIDVERB            0x00040181L
 #define OLEOBJ_S_INVALIDVERB            0x00040180L
 
 #endif  /* __WINE_WINERROR_H */
diff --git a/include/wingdi.h b/include/wingdi.h
index 66af681..38414e9 100644
--- a/include/wingdi.h
+++ b/include/wingdi.h
@@ -1343,7 +1343,7 @@
     WORD           palVersion;
     WORD           palNumEntries;
     PALETTEENTRY   palPalEntry[1];
-} LOGPALETTE, *PLOGPALETTE, *LPLOGPALETTE;
+} LOGPALETTE, *PLOGPALETTE, *LPLOGPALETTE, *NPLOGPALETTE;
 
   /* Pens */
 
diff --git a/include/winuser.h b/include/winuser.h
index c6bbdff..2fd7be8 100644
--- a/include/winuser.h
+++ b/include/winuser.h
@@ -1026,6 +1026,7 @@
 #define CS_BYTEALIGNCLIENT  0x1000
 #define CS_BYTEALIGNWINDOW  0x2000
 #define CS_GLOBALCLASS      0x4000
+#define CS_IME              0x00010000
 
 #define PRF_CHECKVISIBLE    0x00000001L
 #define PRF_NONCLIENT       0x00000002L
diff --git a/include/wtypes.h b/include/wtypes.h
index b3ce390..1ffa115 100644
--- a/include/wtypes.h
+++ b/include/wtypes.h
@@ -64,7 +64,9 @@
 #endif /* !defined(__cplusplus) */
 
 extern const IID GUID_NULL;
+#define IID_NULL            GUID_NULL
 #define CLSID_NULL GUID_NULL
+#define FMTID_NULL          GUID_NULL
    
 typedef enum tagDVASPECT
 { 
@@ -132,11 +134,16 @@
 
 typedef ULONG PROPID;
 
+#ifndef _tagBLOB_DEFINED
+#define _tagBLOB_DEFINED
+#define _BLOB_DEFINED
+#define _LPBLOB_DEFINED
 typedef struct tagBLOB
 {
     ULONG cbSize;
     BYTE *pBlobData;
-} BLOB;
+} BLOB, *LPBLOB;
+#endif
 
 #ifndef _tagCY_DEFINED
 #define _tagCY_DEFINED
diff --git a/ole/bindctx.c b/ole/bindctx.c
index b84c00a..bb16312 100644
--- a/ole/bindctx.c
+++ b/ole/bindctx.c
@@ -338,7 +338,7 @@
     if (pprot==NULL)
         return E_POINTER;
     
-    res=GetRunningObjectTable(0,(LPVOID*)pprot);
+    res=GetRunningObjectTable(0, pprot);
 
     return res;
 }
diff --git a/ole/moniker.c b/ole/moniker.c
index 6f27879..206b465 100644
--- a/ole/moniker.c
+++ b/ole/moniker.c
@@ -447,7 +447,7 @@
 /******************************************************************************
  *		GetRunningObjectTable16	[OLE2.30]
  */
-HRESULT WINAPI GetRunningObjectTable16(DWORD reserved, LPVOID *pprot)
+HRESULT WINAPI GetRunningObjectTable16(DWORD reserved, LPRUNNINGOBJECTTABLE *pprot)
 {
 	FIXME(ole,"(%ld,%p),stub!\n",reserved,pprot);
     return E_NOTIMPL;
@@ -456,7 +456,7 @@
 /***********************************************************************
  *           GetRunningObjectTable (OLE2.73)
  */
-HRESULT WINAPI GetRunningObjectTable(DWORD reserved, LPVOID *pprot)
+HRESULT WINAPI GetRunningObjectTable(DWORD reserved, LPRUNNINGOBJECTTABLE *pprot)
 {
     IID riid=IID_IRunningObjectTable;
     HRESULT res;
