Authors: Paul Quinn <paulq@corel.ca>, Aaron Barnes <aaronb@corel.ca>, Adrian Thurston <adriant@corel.ca>
Bundle of new stubs.

diff --git a/include/ole2.h b/include/ole2.h
index 9966342..9688b6b 100644
--- a/include/ole2.h
+++ b/include/ole2.h
@@ -38,5 +38,47 @@
 HRESULT WINAPI WriteClassStm(IStream *pStm,REFCLSID rclsid);
 HRESULT WINAPI ReadClassStm(IStream *pStm,REFCLSID pclsid);
 
+
+HRESULT     WINAPI OleSave(LPPERSISTSTORAGE pPS, LPSTORAGE pStg, BOOL fSameAsLoad);
+HRESULT     WINAPI OleRegGetMiscStatus (REFCLSID clsid, DWORD dwAspect, DWORD* pdwStatus);
+HRESULT     WINAPI CreateStreamOnHGlobal (HGLOBAL hGlobal, BOOL fDeleteOnRelease, LPSTREAM* ppstm);
+HRESULT     WINAPI OleRegEnumVerbs (REFCLSID clsid, LPENUMOLEVERB* ppenum);
+BOOL        WINAPI OleIsRunning(LPOLEOBJECT pObject);
+HRESULT     WINAPI OleCreateLinkFromData(LPDATAOBJECT pSrcDataObj, REFIID riid,
+                DWORD renderopt, LPFORMATETC pFormatEtc,
+                LPOLECLIENTSITE pClientSite, LPSTORAGE pStg,
+                LPVOID* ppvObj);
+HRESULT     WINAPI OleSetContainedObject(LPUNKNOWN pUnknown, BOOL fContained);
+HRESULT     WINAPI OleQueryLinkFromData(IDataObject* pSrcDataObject);
+HRESULT     WINAPI OleQueryCreateFromData(LPDATAOBJECT pSrcDataObject);
+HRESULT     WINAPI OleRun(LPUNKNOWN pUnknown);
+HRESULT     WINAPI OleGetClipboard(IDataObject** ppDataObj);
+HRESULT     WINAPI OleCreateStaticFromData(LPDATAOBJECT pSrcDataObj, REFIID iid,
+                DWORD renderopt, LPFORMATETC pFormatEtc, LPOLECLIENTSITE pClientSite, 
+                LPSTORAGE pStg, LPVOID* ppvObj);
+HRESULT     WINAPI ReadFmtUserTypeStg(LPSTORAGE pstg, CLIPFORMAT* pcf, LPOLESTR* lplpszUserType);
+HRESULT     WINAPI OleLoad(LPSTORAGE pStg, REFIID riid, LPOLECLIENTSITE pClientSite, LPVOID* ppvObj);
+HRESULT     WINAPI GetHGlobalFromILockBytes(LPLOCKBYTES plkbyt, HGLOBAL* phglobal);
+HRESULT     WINAPI CreateILockBytesOnHGlobal(HGLOBAL hGlobal, BOOL fDeleteOnRelease, LPLOCKBYTES* pplkbyt);
+HRESULT     WINAPI CreateDataAdviseHolder(LPDATAADVISEHOLDER* ppDAHolder);
+HGLOBAL     WINAPI OleGetIconOfClass(REFCLSID rclsid, LPOLESTR lpszLabel, BOOL fUseTypeAsLabel);
+HRESULT     WINAPI OleLockRunning(LPUNKNOWN pUnknown, BOOL fLock, BOOL fLastUnlockCloses);
+HRESULT     WINAPI OleCreateFromFile(REFCLSID rclsid, LPCOLESTR lpszFileName, REFIID riid,
+                DWORD renderopt, LPFORMATETC lpFormatEtc, LPOLECLIENTSITE pClientSite, LPSTORAGE pStg, LPVOID* ppvObj);
+HRESULT     WINAPI OleCreateLink(LPMONIKER pmkLinkSrc, REFIID riid, DWORD renderopt, LPFORMATETC lpFormatEtc,
+                LPOLECLIENTSITE pClientSite, LPSTORAGE pStg, LPVOID* ppvObj);
+HRESULT     WINAPI OleCreate(REFCLSID rclsid, REFIID riid, DWORD renderopt, LPFORMATETC pFormatEtc, LPOLECLIENTSITE pClientSite,
+                LPSTORAGE pStg, LPVOID* ppvObj);
+HRESULT     WINAPI OleFlushClipboard();
+HRESULT     WINAPI SetConvertStg(LPSTORAGE pStg, BOOL fConvert);
+BOOL        WINAPI IsAccelerator(HACCEL hAccel, int cAccelEntries, LPMSG lpMsg, WORD* lpwCmd);
+HRESULT     WINAPI OleCreateLinkToFile(LPCOLESTR lpszFileName, REFIID riid, DWORD renderopt, LPFORMATETC lpFormatEtc,
+                LPOLECLIENTSITE pClientSite, LPSTORAGE pStg, LPVOID* ppvObj);
+HRESULT     WINAPI OleDuplicateData(HANDLE hSrc, CLIPFORMAT cfFormat, UINT uiFlags);
+HRESULT     WINAPI WriteFmtUserTypeStg(LPSTORAGE pstg, CLIPFORMAT cf, LPOLESTR lpszUserType);
+HRESULT     WINAPI OleTranslateAccelerator (LPOLEINPLACEFRAME lpFrame, LPOLEINPLACEFRAMEINFO lpFrameInfo, LPMSG lpmsg);
+HRESULT     WINAPI OleCreateFromData(LPDATAOBJECT pSrcDataObj, REFIID riid, DWORD renderopt, LPFORMATETC pFormatEtc,
+                LPOLECLIENTSITE pClientSite, LPSTORAGE pStg, LPVOID* ppvObj);
+
 #endif  /* __WINE_OLE2_H */
 
diff --git a/include/oleauto.h b/include/oleauto.h
index fd11314..45de1f1 100644
--- a/include/oleauto.h
+++ b/include/oleauto.h
@@ -296,6 +296,7 @@
 HRESULT WINAPI VarCyFromR4(FLOAT fltIn, CY* pcyOut);
 HRESULT WINAPI VarCyFromR8(double dblIn, CY* pcyOut);
 HRESULT WINAPI VarCyFromDate(DATE dateIn, CY* pcyOut);
+HRESULT WINAPI VarCyFromStr(OLECHAR *strIn, LCID lcid, ULONG dwFlags, CY *pcyOut);
 HRESULT WINAPI VarCyFromBool(VARIANT_BOOL boolIn, CY* pcyOut);
 HRESULT WINAPI VarCyFromI1(CHAR cIn, CY*pcyOut);
 HRESULT WINAPI VarCyFromUI2(USHORT uiIn, CY*pcyOut);
@@ -311,6 +312,7 @@
 HRESULT WINAPI VarBstrFromI4(LONG lIn, LCID lcid, ULONG dwFlags, BSTR* pbstrOut);
 HRESULT WINAPI VarBstrFromR4(FLOAT fltIn, LCID lcid, ULONG dwFlags, BSTR* pbstrOut);
 HRESULT WINAPI VarBstrFromR8(double dblIn, LCID lcid, ULONG dwFlags, BSTR* pbstrOut);
+HRESULT WINAPI VarBstrFromCy(CY cyIn, LCID lcid, ULONG dwFlags, BSTR *pbstrOut);
 HRESULT WINAPI VarBstrFromDate(DATE dateIn, LCID lcid, ULONG dwFlags, BSTR* pbstrOut);
 HRESULT WINAPI VarBstrFromBool(VARIANT_BOOL boolIn, LCID lcid, ULONG dwFlags, BSTR* pbstrOut);
 HRESULT WINAPI VarBstrFromI1(CHAR cIn, LCID lcid, ULONG dwFlags, BSTR*pbstrOut);
diff --git a/include/olectl.h b/include/olectl.h
index 562b331..cda24ad 100644
--- a/include/olectl.h
+++ b/include/olectl.h
@@ -279,6 +279,8 @@
 #define CTL_E_SEARCHTEXTNOTFOUND        STD_CTL_SCODE(744)
 #define CTL_E_REPLACEMENTSTOOLONG       STD_CTL_SCODE(746)
 
+#define VT_COLOR            VT_I4
+#define VT_FONT             VT_DISPATCH
 #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
diff --git a/include/wine/obj_storage.h b/include/wine/obj_storage.h
index 9c8f74d..9e66c46 100644
--- a/include/wine/obj_storage.h
+++ b/include/wine/obj_storage.h
@@ -680,6 +680,8 @@
 
 HRESULT WINAPI WriteClassStg(IStorage* pStg, REFCLSID rclsid);
 
+HRESULT WINAPI StgCreateDocfileOnILockBytes(ILockBytes *plkbyt,DWORD grfMode, DWORD reserved, IStorage** ppstgOpen);
+HRESULT WINAPI StgOpenStorageOnILockBytes(ILockBytes *plkbyt, IStorage *pstgPriority, DWORD grfMode, SNB snbExclude, DWORD reserved, IStorage **ppstgOpen);
 
 /*****************************************************************************
  * Other storage API
diff --git a/include/winuser.h b/include/winuser.h
index 18d6e87..f4be841 100644
--- a/include/winuser.h
+++ b/include/winuser.h
@@ -3397,6 +3397,7 @@
 LONG        WINAPI TabbedTextOutW(HDC,INT,INT,LPCWSTR,INT,INT,const INT*,INT);
 #define     TabbedTextOut WINELIB_NAME_AW(TabbedTextOut)
 INT       WINAPI ToAscii(UINT,UINT,LPBYTE,LPWORD,UINT);
+INT       WINAPI ToAsciiEx(UINT,UINT,LPBYTE,LPWORD,UINT,HKL);
 BOOL      WINAPI TrackPopupMenu(HMENU,UINT,INT,INT,INT,HWND,const RECT*);
 INT       WINAPI TranslateAccelerator(HWND,HACCEL,LPMSG);
 BOOL      WINAPI TranslateMDISysAccel(HWND,LPMSG);
@@ -3413,6 +3414,9 @@
 WORD        WINAPI VkKeyScanA(CHAR);
 WORD        WINAPI VkKeyScanW(WCHAR);
 #define     VkKeyScan WINELIB_NAME_AW(VkKeyScan)
+WORD        WINAPI VkKeyScanExA(CHAR, HKL);
+WORD        WINAPI VkKeyScanExW(WCHAR, HKL);
+#define     VkKeyScanEx WINELIB_NAME_AW(VkKeyScanEx)
 HWND      WINAPI WindowFromDC(HDC);
 HWND      WINAPI WindowFromPoint(POINT);
 BOOL      WINAPI WinHelpA(HWND,LPCSTR,UINT,DWORD);
diff --git a/ole/Makefile.in b/ole/Makefile.in
index b957087..ad7ed75 100644
--- a/ole/Makefile.in
+++ b/ole/Makefile.in
@@ -18,6 +18,7 @@
 	ole2.c \
 	ole2disp.c \
 	ole2nls.c \
+	ole2stubs.c \
 	olecli.c \
 	oledlg.c \
 	olefont.c \
diff --git a/ole/ole2.c b/ole/ole2.c
index 72807bc..d9bc52f 100644
--- a/ole/ole2.c
+++ b/ole/ole2.c
@@ -427,7 +427,7 @@
 /***********************************************************************
  * OleQueryLinkFromData32 [OLE32.118]
  */
-HRESULT WINAPI OleQueryLinkFromData32(
+HRESULT WINAPI OleQueryLinkFromData(
   IDataObject* pSrcDataObject)
 {
   FIXME(ole,"(%p),stub!\n", pSrcDataObject);
@@ -435,9 +435,9 @@
 }
 
 /***********************************************************************
- * OleRegGetMiscStatus32 [OLE32.121]
+ * OleRegGetMiscStatus [OLE32.121]
  */
-HRESULT WINAPI OleRegGetMiscStatus32(
+HRESULT WINAPI OleRegGetMiscStatus(
   REFCLSID clsid,
   DWORD    dwAspect,
   DWORD*   pdwStatus)
@@ -449,7 +449,7 @@
 /***********************************************************************
  * OleGetClipboard32 [OLE32.105]
  */
-HRESULT WINAPI OleGetClipboard32(
+HRESULT WINAPI OleGetClipboard(
   IDataObject** ppDataObj)
 {
   FIXME(ole,"(%p),stub!\n", ppDataObj);
diff --git a/ole/ole2stubs.c b/ole/ole2stubs.c
new file mode 100644
index 0000000..5a48565
--- /dev/null
+++ b/ole/ole2stubs.c
@@ -0,0 +1,294 @@
+/*
+ * Temporary place for ole2 stubs.
+ *
+ * Copyright (C) 1999 Corel Corporation
+ */
+
+#include "ole2.h"
+#include "debug.h"
+
+/******************************************************************************
+ *               OleCreateFromData        [OLE32.92]
+ */
+HRESULT WINAPI OleCreateFromData(LPDATAOBJECT pSrcDataObj, REFIID riid,
+                DWORD renderopt, LPFORMATETC pFormatEtc,
+                LPOLECLIENTSITE pClientSite, LPSTORAGE pStg,
+                LPVOID* ppvObj)
+{
+    FIXME(ole,"(%p,%p,%li,%p,%p,%p,%p), stub!\n", pSrcDataObj,riid,renderopt,pFormatEtc,pClientSite,pStg,ppvObj);
+    return S_OK;
+}
+
+
+/******************************************************************************
+ *               OleCreateLinkToFile        [OLE32.96]
+ */
+HRESULT WINAPI  OleCreateLinkToFile(LPCOLESTR lpszFileName, REFIID riid,
+	  		DWORD renderopt, LPFORMATETC lpFormatEtc,
+			LPOLECLIENTSITE pClientSite, LPSTORAGE pStg, LPVOID* ppvObj)
+{
+    FIXME(ole,"(%p,%p,%li,%p,%p,%p,%p), stub!\n",lpszFileName, riid, renderopt, lpFormatEtc, pClientSite, pStg, ppvObj);
+    return S_OK;
+}
+
+
+/******************************************************************************
+ *              OleDuplicateData        [OLE32.102]
+ */
+HRESULT WINAPI OleDuplicateData(HANDLE hSrc, CLIPFORMAT cfFormat,
+	                          UINT uiFlags)
+{
+    FIXME(ole,"(%x,%x,%x), stub!\n", hSrc, cfFormat, uiFlags);
+    return S_OK;
+}
+
+ 
+/***********************************************************************
+ *               WriteFmtUserTypeStg (OLE32.160)
+ */
+HRESULT WINAPI WriteFmtUserTypeStg(
+	  LPSTORAGE pstg, CLIPFORMAT cf, LPOLESTR lpszUserType)
+{
+    FIXME(ole,"(%p,%x,%p) stub!\n",pstg,cf,lpszUserType);
+    return S_OK;
+}
+
+/***********************************************************************
+ *             OleTranslateAccelerator [OLE32.130]
+ */
+HRESULT WINAPI OleTranslateAccelerator (LPOLEINPLACEFRAME lpFrame,
+                   LPOLEINPLACEFRAMEINFO lpFrameInfo, LPMSG lpmsg)
+{
+    FIXME(ole,"(%p,%p,%p),stub!\n", lpFrame, lpFrameInfo, lpmsg);
+    return S_OK;
+}
+
+/******************************************************************************
+ *              CoTreatAsClass        [OLE32.46]
+ */
+HRESULT WINAPI CoTreatAsClass(REFCLSID clsidOld, REFCLSID clsidNew)
+{
+  FIXME(ole,"(%p,%p), stub!\n", clsidOld, clsidNew);
+  return S_OK;
+}
+
+
+/******************************************************************************
+ *              IsAccelerator        [OLE32.75]
+ */
+BOOL WINAPI IsAccelerator(HACCEL hAccel, int cAccelEntries, LPMSG lpMsg, WORD* lpwCmd)
+{
+  FIXME(ole,"(%x,%i,%p,%p), stub!\n", hAccel, cAccelEntries, lpMsg, lpwCmd);
+  return TRUE;
+}
+
+/******************************************************************************
+ *              SetConvertStg        [OLE32.142]
+ */
+HRESULT WINAPI SetConvertStg(LPSTORAGE pStg, BOOL fConvert)
+{
+  FIXME(ole,"(%p,%x), stub!\n", pStg, fConvert);
+  return S_OK;
+}
+
+/******************************************************************************
+ *              OleFlushClipboard        [OLE32.103]
+ */
+HRESULT WINAPI OleFlushClipboard()
+{
+  FIXME(ole,"(), stub!\n");
+  return S_OK;
+}
+
+/******************************************************************************
+ *              OleCreate        [OLE32.80]
+ */
+HRESULT WINAPI OleCreate(REFCLSID rclsid, REFIID riid, DWORD renderopt, LPFORMATETC pFormatEtc, LPOLECLIENTSITE pClientSite,
+                LPSTORAGE pStg, LPVOID* ppvObj)
+{
+  FIXME(ole,"(not shown), stub!\n");
+  return S_OK;
+}
+
+/******************************************************************************
+ *              OleCreateLink        [OLE32.94]
+ */
+HRESULT WINAPI OleCreateLink(LPMONIKER pmkLinkSrc, REFIID riid, DWORD renderopt, LPFORMATETC lpFormatEtc,
+                LPOLECLIENTSITE pClientSite, LPSTORAGE pStg, LPVOID* ppvObj)
+{
+  FIXME(ole,"(not shown), stub!\n");
+  return S_OK;
+}
+
+/******************************************************************************
+ *              OleCreateFromFile        [OLE32.93]
+ */
+HRESULT WINAPI OleCreateFromFile(REFCLSID rclsid, LPCOLESTR lpszFileName, REFIID riid,
+            DWORD renderopt, LPFORMATETC lpFormatEtc, LPOLECLIENTSITE pClientSite, LPSTORAGE pStg, LPVOID* ppvObj)
+{
+  FIXME(ole,"(not shown), stub!\n");
+  return S_OK;
+}
+
+/******************************************************************************
+ *              OleLockRunning        [OLE32.114]
+ */
+HRESULT WINAPI OleLockRunning(LPUNKNOWN pUnknown, BOOL fLock, BOOL fLastUnlockCloses) 
+{
+  FIXME(ole,"(%p,%x,%x), stub!\n", pUnknown, fLock, fLastUnlockCloses);
+  return S_OK;
+}
+
+/******************************************************************************
+ *              OleGetIconOfClass        [OLE32.106]
+ */
+HGLOBAL WINAPI OleGetIconOfClass(REFCLSID rclsid, LPOLESTR lpszLabel, BOOL fUseTypeAsLabel)
+{
+  FIXME(ole,"(%p,%p,%x), stub!\n", rclsid, lpszLabel, fUseTypeAsLabel);
+  return S_OK;
+}
+
+/******************************************************************************
+ *              OleQueryCreateFromData        [OLE32.117]
+ */
+HRESULT WINAPI OleQueryCreateFromData(LPDATAOBJECT pSrcDataObject)
+{
+  FIXME(ole,"(%p), stub!\n", pSrcDataObject);
+  return S_OK;
+}
+
+/******************************************************************************
+ *              CreateDataAdviseHolder        [OLE32.53]
+ */
+HRESULT WINAPI CreateDataAdviseHolder(LPDATAADVISEHOLDER* ppDAHolder)
+{
+  FIXME(ole,"(%p), stub!\n", ppDAHolder);
+  return S_OK;
+}
+
+/******************************************************************************
+ *              CreateILockBytesOnHGlobal        [OLE32.67]
+ */
+HRESULT WINAPI CreateILockBytesOnHGlobal(HGLOBAL hGlobal, BOOL fDeleteOnRelease, LPLOCKBYTES* pplkbyt)
+{
+  FIXME(ole,"(%x,%x,%p), stub!\n", hGlobal, fDeleteOnRelease, pplkbyt);
+  return S_OK;
+}
+
+/******************************************************************************
+ *              GetHGlobalFromILockBytes        [OLE32.70]
+ */
+HRESULT WINAPI GetHGlobalFromILockBytes (LPLOCKBYTES plkbyt, HGLOBAL* phglobal)
+{
+  FIXME(ole,"(%p,%p), stub!\n", plkbyt, phglobal);
+  return S_OK;
+}
+
+/******************************************************************************
+ *              OleLoad        [OLE32.112]
+ */
+HRESULT WINAPI OleLoad(LPSTORAGE pStg, REFIID riid, LPOLECLIENTSITE pClientSite, LPVOID* ppvObj)
+{
+  FIXME(ole,"(%p,%p,%p,%p), stub!\n", pStg, riid, pClientSite, ppvObj);
+  return S_OK;
+}
+
+/******************************************************************************
+ *              ReadFmtUserTypeStg        [OLE32.136]
+ */
+HRESULT WINAPI ReadFmtUserTypeStg (LPSTORAGE pstg, CLIPFORMAT* pcf, LPOLESTR* lplpszUserType)
+{
+  FIXME(ole,"(%p,%p,%p), stub!\n", pstg, pcf, lplpszUserType);
+  return S_OK;
+}
+
+/******************************************************************************
+ *              OleCreateStaticFromData        [OLE32.98]
+ */
+HRESULT     WINAPI OleCreateStaticFromData(LPDATAOBJECT pSrcDataObj, REFIID iid,
+                DWORD renderopt, LPFORMATETC pFormatEtc, LPOLECLIENTSITE pClientSite,
+                LPSTORAGE pStg, LPVOID* ppvObj)
+{
+  FIXME(ole,"(not shown), stub!\n");
+  return S_OK;
+}
+
+/******************************************************************************
+ *              OleRun        [OLE32.123]
+ */
+HRESULT WINAPI OleRun(LPUNKNOWN pUnknown)
+{
+  FIXME(ole,"(%p), stub!\n", pUnknown);
+  return S_OK;
+}
+
+/******************************************************************************
+ *              OleSetContainedObject        [OLE32.128]
+ */
+HRESULT WINAPI OleSetContainedObject(LPUNKNOWN pUnknown, BOOL fContained)
+{
+  FIXME(ole,"(%p,%x), stub!\n", pUnknown, fContained);
+  return S_OK;
+}
+
+/******************************************************************************
+ *              OleCreateLinkFromData        [OLE32.95]
+ */
+
+HRESULT WINAPI  OleCreateLinkFromData(LPDATAOBJECT pSrcDataObj, REFIID riid,
+                DWORD renderopt, LPFORMATETC pFormatEtc,
+                LPOLECLIENTSITE pClientSite, LPSTORAGE pStg,
+                LPVOID* ppvObj)
+{
+  FIXME(ole,"(not shown), stub!\n");
+  return S_OK;
+}
+
+/******************************************************************************
+ *              CreateDataCache        [OLE32.54]
+ */
+HRESULT WINAPI CreateDataCache(LPUNKNOWN pUnkOuter, REFCLSID rclsid, REFIID iid, LPVOID* ppv)
+{
+  FIXME(ole,"(%p,%p,%p,%p), stub!\n", pUnkOuter, rclsid, iid, ppv);
+  return S_OK;
+}
+
+/******************************************************************************
+ *              OleIsRunning        [OLE32.111]
+ */
+BOOL WINAPI OleIsRunning(LPOLEOBJECT pObject)
+{
+  FIXME(ole,"(%p), stub!\n", pObject);
+  return TRUE;
+}
+
+/***********************************************************************
+ *           OleRegEnumVerbs    [OLE32.120]
+ */
+HRESULT WINAPI OleRegEnumVerbs (REFCLSID clsid, LPENUMOLEVERB* ppenum)
+{
+    FIXME(ole,"(%p,%p), stub!\n", clsid, ppenum);
+    return S_OK;
+}
+
+/***********************************************************************
+ *           CreateStreamOnHGlobal     [OLE32.61]
+ */
+HRESULT WINAPI CreateStreamOnHGlobal (HGLOBAL hGlobal, BOOL fDeleteOnRelease, LPSTREAM* ppstm)
+{
+    FIXME(ole,"(%x,%x,%p), stub!\n", hGlobal, fDeleteOnRelease, ppstm);
+    return S_OK;
+}
+
+/***********************************************************************
+ *           OleSave     [OLE32.124]
+ */
+HRESULT WINAPI OleSave(
+    LPPERSISTSTORAGE pPS,
+    LPSTORAGE pStg,
+    BOOL fSameAsLoad)
+{
+    FIXME(ole,"(%p,%p,%x), stub!\n", pPS, pStg, fSameAsLoad);
+    return S_OK;
+}
+
diff --git a/ole/storage.c b/ole/storage.c
index 0e29d7d..988da1e 100644
--- a/ole/storage.c
+++ b/ole/storage.c
@@ -1567,6 +1567,26 @@
  */
 
 /******************************************************************************
+ *		StgOpenStorageOnILockBytes    [OLE32.149]
+ */
+HRESULT WINAPI StgOpenStorageOnILockBytes(ILockBytes *plkbyt, IStorage *pstgPriority, DWORD grfMode, SNB snbExclude, DWORD reserved, IStorage **ppstgOpen)
+{
+	FIXME(ole, "(not shown) stub!\n");
+	return S_OK;
+}
+
+
+/******************************************************************************
+ *		StgCreateDocfileOnILockBytes    [OLE32.145]
+ */
+HRESULT WINAPI StgCreateDocfileOnILockBytes(ILockBytes *plkbyt,DWORD grfMode, DWORD reserved, IStorage** ppstgOpen)
+{
+	FIXME(ole, "(not shown) stub!\n");
+	return S_OK;
+}
+
+
+/******************************************************************************
  *		StgCreateDocFile16	[STORAGE.1]
  */
 HRESULT WINAPI StgCreateDocFile16(
diff --git a/ole/variant.c b/ole/variant.c
index ad63734..4bccf49 100644
--- a/ole/variant.c
+++ b/ole/variant.c
@@ -3189,6 +3189,15 @@
 }
 
 /******************************************************************************
+ *    VarBstrFromCy   [OLEAUT32.113]
+ */
+HRESULT WINAPI VarBstrFromCy(CY cyIn, LCID lcid, ULONG dwFlags, BSTR *pbstrOut) {
+				/* FIXME */
+	return E_NOTIMPL;
+}
+
+ 
+/******************************************************************************
  *		VarBstrFromDate32		[OLEAUT32.114]
  *
  * The date is implemented using an 8 byte floating-point number.
@@ -4197,6 +4206,15 @@
 }
 
 /**********************************************************************
+ *              VarCyFromDate32 [OLEAUT32.104]
+ */
+HRESULT WINAPI VarCyFromStr(OLECHAR *strIn, LCID lcid, ULONG dwFlags, CY *pcyOut) {
+				/* FIXME */
+		return E_NOTIMPL;
+}
+
+ 
+/**********************************************************************
  *              VarCyFromBool32 [OLEAUT32.106]
  * Convert boolean to currency
  */
diff --git a/relay32/ole32.spec b/relay32/ole32.spec
index e0e19d1..b4f6308 100644
--- a/relay32/ole32.spec
+++ b/relay32/ole32.spec
@@ -46,22 +46,22 @@
  43 stdcall CoTaskMemAlloc(long) CoTaskMemAlloc
  44 stdcall CoTaskMemFree(ptr) CoTaskMemFree
  45 stdcall CoTaskMemRealloc(ptr long) CoTaskMemRealloc
- 46 stub CoTreatAsClass             # stdcall (ptr ptr) return 0,ERR_NOTIMPLEMENTED
+ 46 stdcall CoTreatAsClass(ptr ptr) CoTreatAsClass
  47 stdcall CoUninitialize() CoUninitialize
  48 stub CoUnloadingWOW
  49 stub CoUnmarshalHresult         # stdcall (ptr ptr) return 0,ERR_NOTIMPLEMENTED
  50 stub CoUnmarshalInterface       # stdcall (ptr ptr ptr) return 0,ERR_NOTIMPLEMENTED
  51 stdcall CreateAntiMoniker(ptr)  CreateAntiMoniker
  52 stdcall CreateBindCtx(long ptr) CreateBindCtx
- 53 stub CreateDataAdviseHolder     # stdcall (ptr) return 0,ERR_NOTIMPLEMENTED
- 54 stub CreateDataCache            # stdcall (ptr ptr ptr ptr) return 0,ERR_NOTIMPLEMENTED
+ 53 stdcall CreateDataAdviseHolder(ptr) CreateDataAdviseHolder
+ 54 stdcall CreateDataCache(ptr ptr ptr ptr) CreateDataCache
  55 stdcall CreateFileMoniker(wstr ptr) CreateFileMoniker
  56 stdcall CreateGenericComposite(ptr ptr ptr) CreateGenericComposite
- 57 stub CreateILockBytesOnHGlobal  # stdcall (ptr long ptr) return 0,ERR_NOTIMPLEMENTED
+ 57 stdcall CreateILockBytesOnHGlobal(ptr long ptr) CreateILockBytesOnHGlobal
  58 stdcall CreateItemMoniker(wstr wstr ptr) CreateItemMoniker
  59 stdcall CreateOleAdviseHolder(ptr) CreateOleAdviseHolder
  60 stub CreatePointerMoniker       # stdcall (ptr ptr) return 0,ERR_NOTIMPLEMENTED
- 61 stub CreateStreamOnHGlobal      # stdcall (ptr long ptr) return 0,ERR_NOTIMPLEMENTED
+ 61 stdcall CreateStreamOnHGlobal(ptr long ptr) CreateStreamOnHGlobal
  62 stub DllDebugObjectRPCHook
  63 stub DllGetClassObject
  64 stub DllGetClassObjectWOW
@@ -70,12 +70,12 @@
  67 stdcall GetClassFile(ptr ptr) GetClassFile
  68 stub GetConvertStg
  69 stub GetDocumentBitStg
- 70 stub GetHGlobalFromILockBytes
+ 70 stdcall GetHGlobalFromILockBytes(ptr ptr) GetHGlobalFromILockBytes
  71 stub GetHGlobalFromStream
  72 stub GetHookInterface
  73 stdcall GetRunningObjectTable(long ptr) GetRunningObjectTable
  74 stub IIDFromString
- 75 stub IsAccelerator
+ 75 stdcall IsAccelerator(long long ptr long) IsAccelerator
  76 stdcall IsEqualGUID(ptr ptr) IsEqualGUID32
  77 stub IsValidIid
  78 stdcall IsValidInterface(ptr) IsValidInterface
@@ -89,67 +89,67 @@
  86 stub OleConvertIStorageToOLESTREAMEx
  87 stub OleConvertOLESTREAMToIStorage
  88 stub OleConvertOLESTREAMToIStorageEx
- 89 stub OleCreate
+ 89 stdcall OleCreate(ptr ptr long ptr ptr ptr ptr) OleCreate
  90 stub OleCreateDefaultHandler
  91 stub OleCreateEmbeddingHelper
- 92 stub OleCreateFromData
- 93 stub OleCreateFromFile
- 94 stub OleCreateLink
- 95 stub OleCreateLinkFromData
- 96 stub OleCreateLinkToFile
+ 92 stdcall OleCreateFromData(ptr ptr long ptr ptr ptr ptr) OleCreateFromData
+ 93 stdcall OleCreateFromFile(ptr ptr ptr long ptr ptr ptr ptr) OleCreateFromFile
+ 94 stdcall OleCreateLink(ptr ptr long ptr ptr ptr ptr) OleCreateLink
+ 95 stdcall OleCreateLinkFromData(ptr ptr long ptr ptr ptr ptr) OleCreateLinkFromData
+ 96 stdcall OleCreateLinkToFile(ptr ptr long ptr ptr ptr ptr) OleCreateLinkToFile
  97 stdcall OleCreateMenuDescriptor(long ptr) OleCreateMenuDescriptor
- 98 stub OleCreateStaticFromData
+ 98 stdcall OleCreateStaticFromData(ptr ptr long ptr ptr ptr ptr) OleCreateStaticFromData
  99 stdcall OleDestroyMenuDescriptor(long) OleDestroyMenuDescriptor
 100 stub OleDoAutoConvert
 101 stub OleDraw
-102 stub OleDuplicateData
-103 stub OleFlushClipboard
+102 stdcall OleDuplicateData(long long long) OleDuplicateData
+103 stdcall OleFlushClipboard() OleFlushClipboard
 104 stub OleGetAutoConvert
-105 stdcall OleGetClipboard(ptr) OleGetClipboard32
-106 stub OleGetIconOfClass
+105 stdcall OleGetClipboard(ptr) OleGetClipboard
+106 stdcall OleGetIconOfClass(ptr ptr long) OleGetIconOfClass
 107 stub OleGetIconOfFile
 108 stdcall OleInitialize(ptr) OleInitialize
 109 stdcall OleInitializeWOW(long) OleInitializeWOW
 110 stdcall OleIsCurrentClipboard(ptr) OleIsCurrentClipboard
-111 stub OleIsRunning
-112 stub OleLoad
-113 stub OleLoadFromStream
-114 stub OleLockRunning
+111 stdcall OleIsRunning(ptr) OleIsRunning
+112 stdcall OleLoad(ptr ptr ptr ptr) OleLoad
+113 stdcall OleLoadFromStream(ptr ptr ptr) OleLoadFromStream
+114 stdcall OleLockRunning(ptr long long) OleLockRunning
 115 stub OleMetafilePictFromIconAndLabel
 116 stub OleNoteObjectVisible
-117 stub OleQueryCreateFromData
-118 stdcall OleQueryLinkFromData(ptr) OleQueryLinkFromData32
+117 stdcall OleQueryCreateFromData(ptr) OleQueryCreateFromData
+118 stdcall OleQueryLinkFromData(ptr) OleQueryLinkFromData
 119 stub OleRegEnumFormatEtc
-120 stub OleRegEnumVerbs
-121 stdcall OleRegGetMiscStatus(ptr long ptr) OleRegGetMiscStatus32
+120 stdcall OleRegEnumVerbs(long ptr) OleRegEnumVerbs
+121 stdcall OleRegGetMiscStatus(ptr long ptr) OleRegGetMiscStatus
 122 stdcall OleRegGetUserType(long long ptr) OleRegGetUserType
-123 stub OleRun
-124 stub OleSave
-125 stub OleSaveToStream
+123 stdcall OleRun(ptr) OleRun
+124 stdcall OleSave(ptr ptr long) OleSave
+125 stdcall OleSaveToStream(ptr ptr) OleSaveToStream
 126 stub OleSetAutoConvert
 127 stdcall OleSetClipboard(ptr) OleSetClipboard
-128 stub OleSetContainedObject
+128 stdcall OleSetContainedObject(ptr long) OleSetContainedObject
 129 stdcall OleSetMenuDescriptor(long long long ptr ptr) OleSetMenuDescriptor
-130 stub OleTranslateAccelerator
+130 stdcall OleTranslateAccelerator(ptr ptr ptr) OleTranslateAccelerator
 131 stdcall OleUninitialize() OleUninitialize
 132 stub OpenOrCreateStream
 133 stub ProgIDFromCLSID
-134 stdcall ReadClassStg(ptr ptr) ReadClassStg 
-135 stdcall ReadClassStm(ptr ptr) ReadClassStm 
-136 stub ReadFmtUserTypeStg
+134 stdcall ReadClassStg(ptr ptr) ReadClassStg
+135 stdcall ReadClassStm(ptr ptr) ReadClassStm
+136 stdcall ReadFmtUserTypeStg(ptr ptr ptr) ReadFmtUserTypeStg
 137 stub ReadOleStg
 138 stub ReadStringStream
 139 stdcall RegisterDragDrop(long ptr) RegisterDragDrop
 140 stdcall ReleaseStgMedium(ptr) ReleaseStgMedium
 141 stdcall RevokeDragDrop(long) RevokeDragDrop
-142 stub SetConvertStg
+142 stdcall SetConvertStg(ptr long) SetConvertStg
 143 stub SetDocumentBitStg
 144 stdcall StgCreateDocfile(wstr long long ptr) StgCreateDocfile
-145 stub StgCreateDocfileOnILockBytes
+145 stdcall StgCreateDocfileOnILockBytes(ptr long long ptr) StgCreateDocfileOnILockBytes
 146 stdcall StgIsStorageFile(wstr) StgIsStorageFile
 147 stub StgIsStorageILockBytes
 148 stdcall StgOpenStorage(wstr ptr long ptr long ptr) StgOpenStorage
-149 stub StgOpenStorageOnILockBytes
+149 stdcall StgOpenStorageOnILockBytes(ptr ptr long long long ptr) StgOpenStorageOnILockBytes
 150 stub StgSetTimes
 151 stdcall StringFromCLSID(ptr ptr) StringFromCLSID
 152 stdcall StringFromGUID2(ptr ptr long) StringFromGUID2
@@ -160,7 +160,7 @@
 157 stub UtGetDvtd32Info
 158 stdcall WriteClassStg(ptr ptr) WriteClassStg
 159 stdcall WriteClassStm(ptr ptr) WriteClassStm
-160 stub WriteFmtUserTypeStg
+160 stdcall WriteFmtUserTypeStg(ptr long ptr) WriteFmtUserTypeStg
 161 stub WriteOleStg
 162 stub WriteStringStream
 163 stdcall CoInitializeEx(ptr long) CoInitializeEx
diff --git a/relay32/oleaut32.spec b/relay32/oleaut32.spec
index f756cc4..7b5de51 100644
--- a/relay32/oleaut32.spec
+++ b/relay32/oleaut32.spec
@@ -95,7 +95,7 @@
 101 stdcall VarCyFromR4(long ptr) VarCyFromR4
 102 stdcall VarCyFromR8(double ptr) VarCyFromR8
 103 stdcall VarCyFromDate(double ptr) VarCyFromDate
-104 stub VarCyFromStr
+104 stdcall VarCyFromStr(ptr long long ptr) VarCyFromStr
 105 stub VarCyFromDisp
 106 stdcall VarCyFromBool(long ptr) VarCyFromBool
 108 stdcall VarBstrFromUI1(long long long ptr) VarBstrFromUI1
@@ -103,7 +103,7 @@
 110 stdcall VarBstrFromI4(long long long ptr) VarBstrFromI4
 111 stdcall VarBstrFromR4(long long long ptr) VarBstrFromR4
 112 stdcall VarBstrFromR8(double long long ptr) VarBstrFromR8
-113 stub VarBstrFromCy
+113 stdcall VarBstrFromCy(double long long ptr) VarBstrFromCy
 114 stdcall VarBstrFromDate(long long long ptr) VarBstrFromDate
 115 stub VarBstrFromDisp
 116 stdcall VarBstrFromBool(long long long ptr) VarBstrFromBool
diff --git a/relay32/user32.spec b/relay32/user32.spec
index d33151f..21ed35c 100644
--- a/relay32/user32.spec
+++ b/relay32/user32.spec
@@ -548,7 +548,7 @@
 544 stub TileChildWindows
 545 stdcall TileWindows(long long ptr long ptr) TileWindows
 546 stdcall ToAscii(long long ptr ptr long) ToAscii
-547 stub ToAsciiEx
+547 stdcall ToAsciiEx(long long ptr ptr long long) ToAsciiEx
 548 stdcall ToUnicode(long long ptr wstr long long) ToUnicode
 549 stdcall TrackPopupMenu(long long long long long long ptr) TrackPopupMenu
 550 stdcall TrackPopupMenuEx(long long long long long ptr) TrackPopupMenuEx
@@ -575,8 +575,8 @@
 571 stdcall ValidateRect(long ptr) ValidateRect
 572 stdcall ValidateRgn(long long) ValidateRgn
 573 stdcall VkKeyScanA(long) VkKeyScanA
-574 stub VkKeyScanExA
-575 stub VkKeyScanExW
+574 stdcall VkKeyScanExA(long long) VkKeyScanExA
+575 stdcall VkKeyScanExW(long long) VkKeyScanExW
 576 stdcall VkKeyScanW(long) VkKeyScanW
 577 stdcall WaitForInputIdle(long long) WaitForInputIdle
 578 stdcall WaitMessage() WaitMessage
diff --git a/windows/input.c b/windows/input.c
index 4d34e4b..3ddee08 100644
--- a/windows/input.c
+++ b/windows/input.c
@@ -744,6 +744,24 @@
 	return VkKeyScanA((CHAR)cChar); /* FIXME: check unicode */
 }
 
+/**********************************************************************
+ *           VkKeyScanExA      (USER32.574)
+ */
+WORD WINAPI VkKeyScanExA(CHAR cChar, HKL dwhkl)
+{
+				/* FIXME: complete workaround this is */
+				return VkKeyScan16(cChar);
+}
+
+/******************************************************************************
+ *      VkKeyScanExW      (USER32.575)
+ */
+WORD WINAPI VkKeyScanExW(WCHAR cChar, HKL dwhkl)
+{
+				/* FIXME: complete workaround this is */
+				return VkKeyScanA((CHAR)cChar); /* FIXME: check unicode */
+}
+ 
 /******************************************************************************
  *    	GetKeyboardType32      (USER32.255)
  */
@@ -861,6 +879,16 @@
     return ToAscii16(virtKey,scanCode,lpKeyState,lpChar,flags);
 }
 
+/****************************************************************************
+ *	ToAscii32      (USER32.547)
+ */
+INT WINAPI ToAsciiEx( UINT virtKey, UINT scanCode, LPBYTE lpKeyState,
+                      LPWORD lpChar, UINT flags, HKL dwhkl )
+{
+		/* FIXME: need true implementation */
+    return ToAscii16(virtKey,scanCode,lpKeyState,lpChar,flags);
+}
+
 /**********************************************************************
  *           ActivateKeyboardLayout32      (USER32.1)
  *