diff --git a/controls/edit.c b/controls/edit.c
index efc578a..d9ccbba 100644
--- a/controls/edit.c
+++ b/controls/edit.c
@@ -43,8 +43,6 @@
 					   wrapped line, instead of in front of the next character */
 #define EF_USE_SOFTBRK		0x0100	/* Enable soft breaks in text. */
 
-typedef BOOL32 *LPBOOL32;
-
 typedef enum
 {
 	END_0 = 0,	/* line ends with terminating '\0' character */
diff --git a/dlls/comctl32/Makefile.in b/dlls/comctl32/Makefile.in
index 5f58694..5bd0b5a 100644
--- a/dlls/comctl32/Makefile.in
+++ b/dlls/comctl32/Makefile.in
@@ -20,6 +20,7 @@
 	nativefont.c \
 	pager.c \
 	progress.c \
+	propsheet.c \
 	rebar.c \
 	status.c \
 	tab.c \
diff --git a/dlls/comctl32/comctl32undoc.c b/dlls/comctl32/comctl32undoc.c
index 3e9fa58..b3f8be4 100644
--- a/dlls/comctl32/comctl32undoc.c
+++ b/dlls/comctl32/comctl32undoc.c
@@ -25,6 +25,15 @@
 
 extern HANDLE32 COMCTL32_hHeap; /* handle to the private heap */
 
+/*
+ * We put some function prototypes here that don't seem to belong in
+ * any header file. When they find their place, we can remove them.
+ */
+extern LPWSTR __cdecl CRTDLL_wcschr(LPCWSTR, WCHAR);
+extern LPSTR WINAPI lstrrchr(LPCSTR, LPCSTR, WORD);
+extern LPWSTR WINAPI lstrrchrw(LPCWSTR, LPCWSTR, WORD);
+extern LPWSTR WINAPI strstrw(LPCWSTR, LPCWSTR);
+
 
 /**************************************************************************
  * DPA_Merge [COMCTL32.11]
@@ -1781,3 +1790,87 @@
     return DSA_Destroy (hdsa);
 }
 
+/**************************************************************************
+ * StrCSpnA [COMCTL32.356]
+ *
+ */
+INT32 WINAPI COMCTL32_StrCSpnA( LPCSTR lpStr, LPCSTR lpSet) {
+  return strcspn(lpStr, lpSet);
+}
+
+/**************************************************************************
+ * StrChrW [COMCTL32.358]
+ *
+ */
+LPWSTR WINAPI COMCTL32_StrChrW( LPCWSTR lpStart, WORD wMatch) {
+  return CRTDLL_wcschr(lpStart, wMatch);
+}
+
+/**************************************************************************
+ * StrCmpNA [COMCTL32.352]
+ *
+ */
+INT32 WINAPI COMCTL32_StrCmpNA( LPCSTR lpStr1, LPCSTR lpStr2, int nChar) {
+  return lstrncmp32A(lpStr1, lpStr2, nChar);
+}
+
+/**************************************************************************
+ * StrCmpNW [COMCTL32.360]
+ *
+ */
+INT32 WINAPI COMCTL32_StrCmpNW( LPCWSTR lpStr1, LPCWSTR lpStr2, int nChar) {
+  return lstrncmp32W(lpStr1, lpStr2, nChar);
+}
+
+/**************************************************************************
+ * StrRChrA [COMCTL32.351]
+ *
+ */
+LPSTR WINAPI COMCTL32_StrRChrA( LPCSTR lpStart, LPCSTR lpEnd, WORD wMatch) {
+  return lstrrchr(lpStart, lpEnd, wMatch); 
+}
+
+/**************************************************************************
+ * StrRChrW [COMCTL32.359]
+ *
+ */
+LPWSTR WINAPI COMCTL32_StrRChrW( LPCWSTR lpStart, LPCWSTR lpEnd, WORD wMatch) {
+  return lstrrchrw(lpStart, lpEnd, wMatch); 
+}
+
+/**************************************************************************
+ * StrStrA [COMCTL32.354]
+ *
+ */
+LPSTR WINAPI COMCTL32_StrStrA( LPCSTR lpFirst, LPCSTR lpSrch) {
+  return strstr(lpFirst, lpSrch);
+}
+
+/**************************************************************************
+ * StrStrW [COMCTL32.362]
+ *
+ */
+LPWSTR WINAPI COMCTL32_StrStrW( LPCWSTR lpFirst, LPCWSTR lpSrch) {
+  return strstrw(lpFirst, lpSrch);
+}
+
+/**************************************************************************
+ * StrSpnW [COMCTL32.364]
+ *
+ */
+INT32 WINAPI COMCTL32_StrSpnW( LPWSTR lpStr, LPWSTR lpSet) {
+  LPWSTR lpLoop = lpStr;
+
+  /* validate ptr */
+  if ((lpStr == 0) || (lpSet == 0)) return 0;
+
+/* while(*lpLoop) { if lpLoop++; } */
+
+  for(; (*lpLoop != 0); lpLoop++)
+    if( CRTDLL_wcschr(lpSet, *(WORD*)lpLoop))
+      return (INT32)(lpLoop-lpStr);
+  
+  return (INT32)(lpLoop-lpStr);
+}
+
+
diff --git a/dlls/comctl32/propsheet.c b/dlls/comctl32/propsheet.c
new file mode 100644
index 0000000..4bfd3af
--- /dev/null
+++ b/dlls/comctl32/propsheet.c
@@ -0,0 +1,65 @@
+/*
+ * Property Sheets
+ *
+ * Copyright 1998 Francis Beaudet
+ *
+ * TODO:
+ *   - All the functions are simply stubs
+ *
+ */
+
+#include "windows.h"
+#include "commctrl.h"
+#include "win.h"
+#include "debug.h"
+
+/*****************************************************************
+ *            PropertySheet32A   (COMCTL32.84)
+ */
+INT32 WINAPI PropertySheet32A(LPCPROPSHEETHEADER32A propertySheetHeader)
+{
+    FIXME(commctrl, "(%p): stub\n", propertySheetHeader);
+
+    return -1;
+}
+
+/*****************************************************************
+ *            PropertySheet32W   (COMCTL32.85)
+ */
+INT32 WINAPI PropertySheet32W(LPCPROPSHEETHEADER32W propertySheetHeader)
+{
+    FIXME(commctrl, "(%p): stub\n", propertySheetHeader);
+
+    return -1;
+}
+
+/*****************************************************************
+ *            CreatePropertySheetPage32A   (COMCTL32.19)
+ */
+HPROPSHEETPAGE WINAPI CreatePropertySheetPage32A(LPCPROPSHEETPAGE32A lpPropSheetPage)
+{
+    FIXME(commctrl, "(%p): stub\n", lpPropSheetPage);
+
+    return 0;
+}
+
+/*****************************************************************
+ *            CreatePropertySheetPage32W   (COMCTL32.20)
+ */
+HPROPSHEETPAGE WINAPI CreatePropertySheetPage32W(LPCPROPSHEETPAGE32W lpPropSheetPage)
+{
+    FIXME(commctrl, "(%p): stub\n", lpPropSheetPage);
+
+    return 0;
+}
+
+/*****************************************************************
+ *            DestroyPropertySheetPage32   (COMCTL32.24)
+ */
+BOOL32 WINAPI DestroyPropertySheetPage32(HPROPSHEETPAGE hPropPage)
+{
+    FIXME(commctrl, "(0x%x): stub\n", hPropPage);
+
+    return FALSE;
+}
+
diff --git a/dlls/shell32/shell32_main.c b/dlls/shell32/shell32_main.c
index 83439ff..ad42cdb 100644
--- a/dlls/shell32/shell32_main.c
+++ b/dlls/shell32/shell32_main.c
@@ -287,6 +287,16 @@
     return retval;
 }
 
+/*************************************************************************
+ *             FindExecutable32W   (SHELL32.219)
+ */
+HINSTANCE32 WINAPI FindExecutable32W(LPCWSTR lpFile, LPCWSTR lpDirectory,
+                                     LPWSTR lpResult)
+{
+  FIXME(shell, "(%p,%p,%p): stub\n", lpFile, lpDirectory, lpResult);
+  return 31;    /* default - 'No association was found' */
+}
+
 typedef struct
 { LPCSTR  szApp;
     LPCSTR  szOtherStuff;
@@ -650,6 +660,29 @@
                            lpDirectory, iShowCmd );
 }
 
+/*************************************************************************
+ * ShellExecute32W [SHELL32.294]
+ * from shellapi.h
+ * WINSHELLAPI HINSTANCE APIENTRY ShellExecuteW(HWND hwnd, LPCWSTR lpOperation, 
+ * LPCWSTR lpFile, LPCWSTR lpParameters, LPCWSTR lpDirectory, INT nShowCmd);   
+ */
+HINSTANCE32 WINAPI 
+ShellExecute32W(
+       HWND32 hwnd, 
+       LPCWSTR lpOperation, 
+       LPCWSTR lpFile, 
+       LPCWSTR lpParameters, 
+       LPCWSTR lpDirectory, 
+       INT32 nShowCmd) {
+
+       FIXME(shell,": stub\n");
+       return 0;
+}
+
+
+
+
+
 
 /*************************************************************************
  *             AboutDlgProc32  (not an exported API function)
diff --git a/files/file.c b/files/file.c
index e4afe21..2b22167 100644
--- a/files/file.c
+++ b/files/file.c
@@ -3,6 +3,10 @@
  *
  * Copyright 1993 John Burton
  * Copyright 1996 Alexandre Julliard
+ *
+ * TODO:
+ *    Fix the CopyFileEx methods to implement the "extented" functionality.
+ *    Right now, they simply call the CopyFile method.
  */
 
 #include <assert.h>
@@ -2005,6 +2009,60 @@
 }
 
 
+/**************************************************************************
+ *           CopyFileEx32A   (KERNEL32.858)
+ *
+ * This implementation ignores most of the extra parameters passed-in into
+ * the "ex" version of the method and calls the CopyFile method.
+ * It will have to be fixed eventually.
+ */
+BOOL32 WINAPI CopyFileEx32A(LPCSTR             sourceFilename,
+                           LPCSTR             destFilename,
+                           LPPROGRESS_ROUTINE progressRoutine,
+                           LPVOID             appData,
+                           LPBOOL32           cancelFlagPointer,
+                           DWORD              copyFlags)
+{
+  BOOL32 failIfExists = FALSE;
+
+  /*
+   * Interpret the only flag that CopyFile can interpret.
+   */
+  if ( (copyFlags & COPY_FILE_FAIL_IF_EXISTS) != 0)
+  {
+    failIfExists = TRUE;
+  }
+
+  return CopyFile32A(sourceFilename, destFilename, failIfExists);
+}
+
+/**************************************************************************
+ *           CopyFileEx32W   (KERNEL32.859)
+ */
+BOOL32 WINAPI CopyFileEx32W(LPCWSTR            sourceFilename,
+                           LPCWSTR            destFilename,
+                           LPPROGRESS_ROUTINE progressRoutine,
+                           LPVOID             appData,
+                           LPBOOL32           cancelFlagPointer,
+                           DWORD              copyFlags)
+{
+    LPSTR sourceA = HEAP_strdupWtoA( GetProcessHeap(), 0, sourceFilename );
+    LPSTR destA   = HEAP_strdupWtoA( GetProcessHeap(), 0, destFilename );
+
+    BOOL32 ret = CopyFileEx32A(sourceA,
+                              destA,
+                              progressRoutine,
+                              appData,
+                              cancelFlagPointer,
+                              copyFlags);
+
+    HeapFree( GetProcessHeap(), 0, sourceA );
+    HeapFree( GetProcessHeap(), 0, destA );
+
+    return ret;
+}
+
+
 /***********************************************************************
  *              SetFileTime   (KERNEL32.650)
  */
diff --git a/graphics/metafiledrv/init.c b/graphics/metafiledrv/init.c
index 3aee5e0..8684b0a 100644
--- a/graphics/metafiledrv/init.c
+++ b/graphics/metafiledrv/init.c
@@ -196,6 +196,23 @@
   return CreateMetaFile16( filename );
 }
 
+/**********************************************************************
+ *          CreateMetaFile32W   (GDI32.52)
+ */
+HDC32 WINAPI CreateMetaFile32W(LPCWSTR filename)
+{
+    LPSTR filenameA;
+    HDC32 hReturnDC;
+
+    filenameA = HEAP_strdupWtoA( GetProcessHeap(), 0, filename );
+
+    hReturnDC = CreateMetaFile32A(filenameA);
+
+    HeapFree( GetProcessHeap(), 0, filenameA );
+
+    return hReturnDC;
+}
+
 static DC *METAFILE_CloseMetaFile( HDC32 hdc ) 
 {
     DC *dc;
@@ -310,8 +327,8 @@
 
 **********************************************************************/
 
-/*
-  need wide version as well
+/**********************************************************************
+ *          CreateEnhMetaFile32A   (GDI32.41)
 */
 HDC32 WINAPI CreateEnhMetaFile32A( 
     HDC32 hdc, /* optional reference DC */
@@ -351,9 +368,45 @@
     TRACE(metafile, "returning %04x\n", dc->hSelf);
     return dc->hSelf;
 #endif
+
+    FIXME(metafile,
+         "(0x%lx,%s,%p,%s): stub\n",
+         hdc,
+         filename,
+         rect,
+         description);
+
     return 0;
 }
 
+/**********************************************************************
+ *          CreateEnhMetaFile32W   (GDI32.42)
+ */
+HDC32 WINAPI CreateEnhMetaFile32W(
+    HDC32         hdc,        /* optional reference DC */
+    LPCWSTR       filename,   /* optional filename for disk metafiles */
+    const RECT32* rect,       /* optional bounding rectangle */
+    LPCWSTR       description /* optional description */ 
+    )
+{
+    LPSTR filenameA;
+    LPSTR descriptionA;
+    HDC32 hReturnDC;
+
+    filenameA    = HEAP_strdupWtoA( GetProcessHeap(), 0, filename );
+    descriptionA = HEAP_strdupWtoA( GetProcessHeap(), 0, description );
+
+    hReturnDC = CreateEnhMetaFile32A(hdc,
+                                    filenameA,
+                                    rect,
+                                    descriptionA);
+
+    HeapFree( GetProcessHeap(), 0, filenameA );
+    HeapFree( GetProcessHeap(), 0, descriptionA );
+
+    return hReturnDC;
+}
+
 HENHMETAFILE32 WINAPI CloseEnhMetaFile32( 
                HDC32 hdc  /* metafile DC */
 	       )
diff --git a/graphics/painting.c b/graphics/painting.c
index 6992cf7..df9b38e 100644
--- a/graphics/painting.c
+++ b/graphics/painting.c
@@ -126,6 +126,43 @@
     	   dc->funcs->pArc(dc,left,top,right,bottom,xstart,ystart,xend,yend);
 }
 
+/***********************************************************************
+ *           ArcTo32    (GDI32.8)
+ */
+BOOL32 WINAPI ArcTo32( HDC32 hdc, 
+                      INT32 left,   INT32 top, 
+                      INT32 right,  INT32 bottom,
+                      INT32 xstart, INT32 ystart,
+                      INT32 xend,   INT32 yend )
+{
+    BOOL32 result;
+
+    /*
+     * According to the documentation, a line is drawn from the current
+     * position to the starting point of the arc.
+     */
+    LineTo32(hdc, xstart, ystart);
+
+    /*
+     * Then the arc is drawn.
+     */
+    result = Arc32(hdc, 
+                  left, top,
+                  right, bottom,
+                  xstart, ystart,
+                  xend, yend);
+
+    /*
+     * If no error occured, the current position is moved to the ending
+     * point of the arc.
+     */
+    if (result)
+    {
+        MoveToEx32(hdc, xend, yend, NULL);
+    }
+
+    return result;
+}
 
 /***********************************************************************
  *           Pie16    (GDI.26)
@@ -1144,3 +1181,32 @@
     return ret;
 }
 
+
+/*************************************************************************
+ * StartDoc32W [GDI32.348]
+ * 
+ */
+INT32 WINAPI 
+StartDoc32W(HDC32 hdc ,const DOCINFO32W* doc) {
+  FIXME(gdi,"stub\n");
+  SetLastError(ERROR_CALL_NOT_IMPLEMENTED); 
+  return 0; /* failure*/
+}
+
+/******************************************************************************
+ *                 PolylineTo32      [GDI32.277]
+ */
+BOOL32 WINAPI PolylineTo32(HDC32 hdc, const POINT32 *lppt, DWORD cCount)
+{
+    FIXME(gdi, "(%d,%p,%ld): stub\n", hdc, lppt, cCount);
+    return 1;
+}
+
+/******************************************************************************
+ *                 AbortDoc32        [GDI32.0]
+ */
+INT32 WINAPI AbortDoc32(HDC32 hdc)
+{
+    FIXME(gdi, "(%d): stub\n", hdc);
+    return 1;
+}
diff --git a/if1632/ddeml.spec b/if1632/ddeml.spec
index 34aa4f9..39e8691 100644
--- a/if1632/ddeml.spec
+++ b/if1632/ddeml.spec
@@ -14,11 +14,11 @@
             DdeClientTransaction16
 12 pascal DdeAbandonTransaction(long word long) DdeAbandonTransaction
 13 pascal DdePostAdvise(long word word) DdePostAdvise16
-14 pascal DdeCreateDataHandle(long ptr long long word word word) DdeCreateDataHandle
+14 pascal DdeCreateDataHandle(long ptr long long word word word) DdeCreateDataHandle16
 15 pascal DdeAddData(word ptr long long) DdeAddData
 16 pascal DdeGetData(word ptr long long) DdeGetData16
-17 pascal DdeAccessData(word ptr) DdeAccessData
-18 pascal DdeUnaccessData(word) DdeUnaccessData
+17 pascal DdeAccessData(word ptr) DdeAccessData16
+18 pascal DdeUnaccessData(word) DdeUnaccessData16
 19 pascal16 DdeFreeDataHandle(long) DdeFreeDataHandle16
 20 pascal16 DdeGetLastError(long) DdeGetLastError16
 21 pascal   DdeCreateStringHandle(long str s_word) DdeCreateStringHandle16
@@ -26,8 +26,8 @@
 23 stub DdeQueryString #(long word ptr long word) DdeQueryString
 24 pascal16 DdeKeepStringHandle(long long) DdeKeepStringHandle16
 
-26 pascal DdeEnableCallback(long word word) DdeEnableCallback
+26 pascal DdeEnableCallback(long word word) DdeEnableCallback16
 27 pascal   DdeNameService(long long long s_word) DdeNameService16
 
-36 pascal DdeCmpStringHandles(word word) DdeCmpStringHandles
+36 pascal DdeCmpStringHandles(word word) DdeCmpStringHandles16
 37 pascal   DdeReconnect(long) DdeReconnect
diff --git a/include/commctrl.h b/include/commctrl.h
index 1bbf6b6..fc6b1a8 100644
--- a/include/commctrl.h
+++ b/include/commctrl.h
@@ -2503,8 +2503,182 @@
 /* type and functionality of last parameter is still unknown */
 LRESULT WINAPI COMCTL32_SendNotifyEx (HWND32, HWND32, UINT32, LPNMHDR, DWORD);
 
+/*
+ * Property sheet support (callback procs)
+ */
+struct _PROPSHEETPAGE32A;  /** need to forward declare those structs **/
+struct _PROPSHEETPAGE32W;
+
+typedef UINT32 (CALLBACK *LPFNPSPCALLBACK32A)(HWND32, UINT32, struct _PROPSHEETPAGE32A*);
+typedef UINT32 (CALLBACK *LPFNPSPCALLBACK32W)(HWND32, UINT32, struct _PROPSHEETPAGE32W*);
+typedef INT32  (CALLBACK *PFNPROPSHEETCALLBACK32)(HWND32, UINT32, LPARAM);
+
+/*
+ * Property sheet support (structures)
+ */
+typedef struct _PROPSHEETPAGE32A
+{
+    DWORD              dwSize;
+    DWORD              dwFlags;
+    HINSTANCE32        hInstance;
+    union 
+    {
+        LPCSTR           lpszTemplate;
+        LPCDLGTEMPLATE   pResource;
+    }u;
+    union
+    {
+        HICON32          hIcon;
+        LPCSTR           pszIcon;
+    }u1;
+    LPCSTR             pszTitle;
+    DLGPROC32          pfnDlgProc;
+    LPARAM             lParam;
+    LPFNPSPCALLBACK32A pfnCallback;
+    UINT32*            pcRefParent;
+    LPCWSTR            pszHeaderTitle;
+    LPCWSTR            pszHeaderSubTitle;
+} PROPSHEETPAGE32A, *LPPROPSHEETPAGE32A;
+
+typedef const PROPSHEETPAGE32A *LPCPROPSHEETPAGE32A;
+
+typedef struct _PROPSHEETPAGE32W
+{
+    DWORD               dwSize;
+    DWORD               dwFlags;
+    HINSTANCE32         hInstance;
+    union 
+    {
+        LPCWSTR          lpszTemplate;
+        LPCDLGTEMPLATE   pResource;
+    }u;
+    union
+    {
+        HICON32          hIcon;
+        LPCWSTR          pszIcon;
+    }u2;
+    LPCWSTR            pszTitle;
+    DLGPROC32          pfnDlgProc;
+    LPARAM             lParam;
+    LPFNPSPCALLBACK32W pfnCallback;
+    UINT32*            pcRefParent;
+    LPCWSTR            pszHeaderTitle;
+    LPCWSTR            pszHeaderSubTitle;
+} PROPSHEETPAGE32W, *LPPROPSHEETPAGE32W;
+
+typedef const PROPSHEETPAGE32W *LPCPROPSHEETPAGE32W;
+
+struct _PSP;
+typedef struct _PSP *HPROPSHEETPAGE;
+
+
+typedef struct _PROPSHEETHEADER32A
+{
+    DWORD                    dwSize;
+    DWORD                    dwFlags;
+    HWND32                   hwndParent;
+    HINSTANCE32              hInstance;
+    union
+    {
+      HICON32                  hIcon;
+      LPCSTR                   pszIcon;
+    }u;
+    LPCSTR                   pszCaption;
+    UINT32                   nPages;
+    union
+    {
+        UINT32                 nStartPage;
+        LPCSTR                 pStartPage;
+    }u2;
+    union
+    {
+        LPCPROPSHEETPAGE32A    ppsp;
+        HPROPSHEETPAGE*        phpage;
+    }u3;
+    PFNPROPSHEETCALLBACK32   pfnCallback;
+    union
+    {
+        HBITMAP32              hbmWatermark;
+        LPCSTR                 pszbmWatermark;
+    }u4;
+    HPALETTE32               hplWatermark;
+    union
+    {
+        HBITMAP32              hbmHeader;
+        LPCSTR                 pszbmHeader;
+    }u5;
+} PROPSHEETHEADER32A, *LPPROPSHEETHEADER32A;
+
+typedef const PROPSHEETHEADER32A *LPCPROPSHEETHEADER32A;
+
+typedef struct _PROPSHEETHEADER32W
+{
+    DWORD                    dwSize;
+    DWORD                    dwFlags;
+    HWND32                   hwndParent;
+    HINSTANCE32              hInstance;
+    union
+    {
+      HICON32                  hIcon;
+      LPCSTR                   pszIcon;
+    }u;
+    LPCWSTR                  pszCaption;
+    UINT32                   nPages;
+    union
+    {
+        UINT32                 nStartPage;
+        LPCWSTR                pStartPage;
+    }u2;
+    union
+    {
+        LPCPROPSHEETPAGE32W    ppsp;
+        HPROPSHEETPAGE*        phpage;
+    }u3;
+    PFNPROPSHEETCALLBACK32   pfnCallback;
+    union
+    {
+        HBITMAP32              hbmWatermark;
+        LPCWSTR                pszbmWatermark;
+    }u4;
+    HPALETTE32               hplWatermark;
+    union
+    {
+        HBITMAP32              hbmHeader;
+        LPCWSTR                pszbmHeader;
+    }u5;
+} PROPSHEETHEADER32W, *LPPROPSHEETHEADER32W;
+
+typedef const PROPSHEETHEADER32W *LPCPROPSHEETHEADER32W;
+
+
+/*
+ * Property sheet support (methods)
+ */
+INT32 WINAPI PropertySheet32A(LPCPROPSHEETHEADER32A);
+INT32 WINAPI PropertySheet32W(LPCPROPSHEETHEADER32W);
+#define PropertySheet WINELIB_NAME(PropertySheet)
+HPROPSHEETPAGE WINAPI CreatePropertySheetPage32A(LPCPROPSHEETPAGE32A);
+HPROPSHEETPAGE WINAPI  CreatePropertySheetPage32W(LPCPROPSHEETPAGE32W);
+#define CreatePropertySheetPage WINELIB_NAME_AW(CreatePropertySheetPage)
+BOOL32 WINAPI DestroyPropertySheetPage32(HPROPSHEETPAGE hPropPage);
+#define DestroyPropertySheetPage WINELIB_NAME(DestroyPropertySheetPage)
+
+/*
+ * Property sheet support (UNICODE-WineLib)
+ */
+DECL_WINELIB_TYPE_AW(PROPSHEETPAGE) 
+DECL_WINELIB_TYPE_AW(LPPROPSHEETPAGE) 
+DECL_WINELIB_TYPE_AW(LPCPROPSHEETPAGE) 
+DECL_WINELIB_TYPE_AW(PROPSHEETHEADER) 
+DECL_WINELIB_TYPE_AW(LPPROPSHEETHEADER) 
+DECL_WINELIB_TYPE_AW(LPCPROPSHEETHEADER) 
+DECL_WINELIB_TYPE_AW(LPFNPSPCALLBACK) 
+DECL_WINELIB_TYPE(PFNPROPSHEETCALLBACK) 
+
 #ifdef __cplusplus
 }
 #endif
 
 #endif  /* __WINE_COMMCTRL_H */
+
+
diff --git a/include/ddeml.h b/include/ddeml.h
index 375448c..0f58384 100644
--- a/include/ddeml.h
+++ b/include/ddeml.h
@@ -57,6 +57,9 @@
 HCONV     WINAPI DdeQueryNextServer16(HCONVLIST, HCONV);
 HCONV     WINAPI DdeQueryNextServer32(HCONVLIST, HCONV);
 #define   DdeQueryNextServer WINELIB_NAME(DdeQueryNextServer)
+DWORD     WINAPI DdeQueryString32A(DWORD, HSZ, LPSTR, DWORD, INT32);
+DWORD     WINAPI DdeQueryString32W(DWORD, HSZ, LPWSTR, DWORD, INT32);
+#define   DdeQueryString WINELIB_NAME(DdeQueryString)
 BOOL16    WINAPI DdeDisconnectList16(HCONVLIST);
 BOOL32    WINAPI DdeDisconnectList32(HCONVLIST);
 #define   DdeDisConnectList WINELIB_NAME(DdeDisconnectList)
@@ -67,7 +70,9 @@
 BOOL32    WINAPI DdeDisconnect32(HCONV);
 #define   DdeDisconnect WINELIB_NAME(DdeDisconnect)
 BOOL16    WINAPI DdeSetUserHandle(HCONV,DWORD,DWORD);
-HDDEDATA  WINAPI DdeCreateHandleData(DWORD,LPBYTE,DWORD,DWORD,HSZ,UINT16,UINT16);
+HDDEDATA  WINAPI DdeCreateDataHandle16(DWORD,LPBYTE,DWORD,DWORD,HSZ,UINT16,UINT16);
+HDDEDATA  WINAPI DdeCreateDataHandle32(DWORD,LPBYTE,DWORD,DWORD,HSZ,UINT32,UINT32);
+#define   DdeCreateDataHandle WINELIB_NAME(DdeCreateDataHandle)
 HCONV     WINAPI DdeReconnect(HCONV);
 HSZ       WINAPI DdeCreateStringHandle16(DWORD,LPCSTR,INT16);
 HSZ       WINAPI DdeCreateStringHandle32A(DWORD,LPCSTR,INT32);
@@ -93,10 +98,18 @@
 #define   DdePostAdvise WINELIB_NAME(DdePostAdvise)
 HDDEDATA  WINAPI DdeAddData(HDDEDATA,LPBYTE,DWORD,DWORD);
 DWORD     WINAPI DdeGetData(HDDEDATA,LPBYTE,DWORD,DWORD);
-LPBYTE    WINAPI DdeAccessData(HDDEDATA,LPDWORD);
-BOOL16    WINAPI DdeUnaccessData(HDDEDATA);
-BOOL16    WINAPI DdeEnableCallback(DWORD,HCONV,UINT16);
-int       WINAPI DdeCmpStringHandles(HSZ,HSZ);
+LPBYTE    WINAPI DdeAccessData16(HDDEDATA,LPDWORD);
+LPBYTE    WINAPI DdeAccessData32(HDDEDATA,LPDWORD);
+#define   DdeAccessData WINELIB_NAME(DdeAccessData)
+BOOL16    WINAPI DdeUnaccessData16(HDDEDATA);
+BOOL32    WINAPI DdeUnaccessData32(HDDEDATA);
+#define   DdeUnaccessData WINELIB_NAME(DdeUnaccessData)
+BOOL16    WINAPI DdeEnableCallback16(DWORD,HCONV,UINT16);
+BOOL32    WINAPI DdeEnableCallback32(DWORD,HCONV,UINT32);
+#define   DdeEnableCallback WINELIB_NAME(DdeEnableCallback)
+int       WINAPI DdeCmpStringHandles16(HSZ,HSZ);
+int       WINAPI DdeCmpStringHandles32(HSZ,HSZ);
+#define   DdeCmpStringHandles WINELIB_NAME(DdeCmpStringHandles)
 
 
 HDDEDATA  WINAPI DdeNameService16(DWORD,HSZ,HSZ,UINT16);
diff --git a/include/shlobj.h b/include/shlobj.h
index 459d3f7..ae5af71 100644
--- a/include/shlobj.h
+++ b/include/shlobj.h
@@ -543,10 +543,6 @@
 
 typedef const FOLDERSETTINGS * LPCFOLDERSETTINGS;
 
-/* FIXME; the next two lines are propersheet related, move to prsht.h when created */
-struct _PSP;
-typedef struct _PSP FAR* HPROPSHEETPAGE;
-
 typedef BOOL32 (CALLBACK FAR * LPFNADDPROPSHEETPAGE)(HPROPSHEETPAGE, LPARAM);
 typedef BOOL32 (CALLBACK FAR * LPFNADDPROPSHEETPAGES)(LPVOID, LPFNADDPROPSHEETPAGE,LPARAM);
 
diff --git a/include/windows.h b/include/windows.h
index 62537ee..30134ae 100644
--- a/include/windows.h
+++ b/include/windows.h
@@ -951,7 +951,6 @@
 #define IDCLOSE             8
 #define IDHELP              9      
 
-
 typedef struct
 {
     HWND16    hwnd;
@@ -2392,6 +2391,11 @@
 #define SEM_NOALIGNMENTFAULTEXCEPT  0x0004
 #define SEM_NOOPENFILEERRORBOX      0x8000
 
+/* CopyFileEx flags */
+#define COPY_FILE_FAIL_IF_EXISTS        0x00000001
+#define COPY_FILE_RESTARTABLE           0x00000002
+#define COPY_FILE_OPEN_SOURCE_FOR_WRITE 0x00000004
+
 /* GetTempFileName() Flags */
 #define TF_FORCEDRIVE	        0x80
 
@@ -6580,6 +6584,14 @@
 }DLGITEMTEMPLATE, *LPDLGITEMTEMPLATE;
 typedef const DLGITEMTEMPLATE *LPCDLGITEMTEMPLATE;
 
+/*
+ * This one seems to be a Win32 only definition. It also is defined with
+ * WINAPI instead of CALLBACK in the windows headers.
+ */
+typedef DWORD (WINAPI *LPPROGRESS_ROUTINE)(LARGE_INTEGER, LARGE_INTEGER, LARGE_INTEGER, 
+                                           LARGE_INTEGER, DWORD, DWORD, HANDLE32,
+                                           HANDLE32, LPVOID);
+
 #pragma pack(4)
 
 /* Declarations for functions that exist only in Win16 */
@@ -6764,6 +6776,9 @@
 BOOL32      WINAPI CopyFile32A(LPCSTR,LPCSTR,BOOL32);
 BOOL32      WINAPI CopyFile32W(LPCWSTR,LPCWSTR,BOOL32);
 #define     CopyFile WINELIB_NAME_AW(CopyFile)
+BOOL32      WINAPI CopyFileEx32A(LPCSTR, LPCSTR, LPPROGRESS_ROUTINE, LPVOID, LPBOOL32, DWORD);
+BOOL32      WINAPI CopyFileEx32W(LPCWSTR, LPCWSTR, LPPROGRESS_ROUTINE, LPVOID, LPBOOL32, DWORD);
+#define     CopyFileEx WINELIB_NAME_AW(CopyFileEx)
 INT32       WINAPI CompareFileTime(LPFILETIME,LPFILETIME);
 BOOL32      WINAPI ControlService(HANDLE32,DWORD,LPSERVICE_STATUS);
 HANDLE32    WINAPI CreateEvent32A(LPSECURITY_ATTRIBUTES,BOOL32,BOOL32,LPCSTR);
@@ -6986,6 +7001,9 @@
 BOOL32      WINAPI IsProcessorFeaturePresent(DWORD);
 BOOL32      WINAPI IsWindowUnicode(HWND32);
 BOOL32      WINAPI IsValidLocale(DWORD,DWORD);
+HKL32       WINAPI LoadKeyboardLayout32A(LPCSTR,UINT32);
+HKL32       WINAPI LoadKeyboardLayout32W(LPCWSTR,UINT32);
+#define     LoadKeyboardLayout WINELIB_NAME_AW(LoadKeyboardLayout)
 BOOL32      WINAPI LocalFileTimeToFileTime(const FILETIME*,LPFILETIME);
 BOOL32      WINAPI LockFile(HFILE32,DWORD,DWORD,DWORD,DWORD);
 BOOL32      WINAPI LookupPrivilegeValue32A(LPCSTR,LPCSTR,LPVOID);
diff --git a/include/wintypes.h b/include/wintypes.h
index f265c42..561f16d 100644
--- a/include/wintypes.h
+++ b/include/wintypes.h
@@ -138,6 +138,7 @@
 typedef UINT32         *LPUINT32;
 typedef HKEY           *LPHKEY;
 typedef FLOAT          *LPFLOAT;
+typedef BOOL32         *LPBOOL32;
 
 /* Special case: a segmented pointer is just a pointer in the user's code. */
 
diff --git a/memory/string.c b/memory/string.c
index e7c83cc..a0a89d7 100644
--- a/memory/string.c
+++ b/memory/string.c
@@ -52,6 +52,12 @@
 #define OEM_TO_ANSI(ch) (STRING_Oem2Ansi[(unsigned char)(ch)])
 #define ANSI_TO_OEM(ch) (STRING_Ansi2Oem[(unsigned char)(ch)])
 
+/* Internaly used by strchr family functions */
+static BOOL32 ChrCmpA( WORD word1, WORD word2);
+static BOOL32 ChrCmpW( WORD word1, WORD word2);
+
+extern LPWSTR __cdecl CRTDLL_wcschr(LPCWSTR str,WCHAR xchar);
+
 
 /***********************************************************************
  *           hmemcpy   (KERNEL.348)
@@ -663,3 +669,98 @@
 	MultiByteToWideChar(CP_ACP,0,pLocal,-1,pWide,dwChars); 
   return lstrlen32W(pWide);
 }
+
+
+/***********************************************************************
+ *           lstrrchr   (Not a Windows API)
+ *
+ * This is the implementation meant to be invoked form within
+ * COMCTL32_StrRChrA and shell32(TODO)...
+ *
+ * Return a pointer to the last occurence of wMatch in lpStart
+ * not looking further than lpEnd...
+ */
+LPSTR WINAPI lstrrchr( LPCSTR lpStart, LPCSTR lpEnd, WORD wMatch )
+{
+  LPCSTR lpGotIt = NULL;
+
+  TRACE(string,"(%s, %s)\n", lpStart, lpEnd);
+
+  if (!lpEnd) lpEnd = lpStart + strlen(lpStart);
+
+  for(; lpStart < lpEnd; lpStart = CharNext32A(lpStart)) 
+    if (!ChrCmpA( GET_WORD(lpStart), wMatch)) 
+      lpGotIt = lpStart;
+    
+  return ((LPSTR)lpGotIt);
+}
+
+/***********************************************************************
+ *           lstrrchrw    (Not a Windows API)
+ *
+ * This is the implementation meant to be invoked form within
+ * COMCTL32_StrRChrW and shell32(TODO)...
+ *
+ * Return a pointer to the last occurence of wMatch in lpStart
+ * not looking further than lpEnd...
+ */  
+LPWSTR WINAPI lstrrchrw( LPCWSTR lpStart, LPCWSTR lpEnd, WORD wMatch )
+{
+  LPCWSTR lpGotIt = NULL;
+
+  TRACE(string,"(%p, %p, %c)\n", lpStart,      lpEnd, wMatch);
+  if (!lpEnd) lpEnd = lpStart + lstrlen32W(lpStart);
+
+  for(; lpStart < lpEnd; lpStart = CharNext32W(lpStart)) 
+    if (!ChrCmpW( GET_WORD(lpStart), wMatch)) 
+      lpGotIt = lpStart;
+    
+  return (LPWSTR)lpGotIt;
+}
+
+/***********************************************************************
+ *           strstrw   (Not a Windows API)
+ *
+ * This is the implementation meant to be invoked form within
+ * COMCTL32_StrStrW and shell32(TODO)...
+ *
+ */
+LPWSTR WINAPI strstrw( LPCWSTR lpFirst, LPCWSTR lpSrch) {
+  UINT32 uSrchLen  = (UINT32)lstrlen32W(lpSrch);
+  WORD wMatchBeg   = *(WORD*)lpSrch;
+
+  TRACE(string,"(%p, %p)\n", lpFirst,  lpSrch);
+
+  for(; 
+    ((lpFirst=CRTDLL_wcschr(lpFirst, wMatchBeg))!=0) && 
+      lstrncmp32W(lpFirst, lpSrch, uSrchLen); 
+    lpFirst++) {
+      continue;
+  }
+  return (LPWSTR)lpFirst;
+}
+
+
+/***********************************************************************
+ *           ChrCmpA   
+ * This fuction returns FALSE if both words match, TRUE otherwise...
+ */
+static BOOL32 ChrCmpA( WORD word1, WORD word2) {
+  if (LOBYTE(word1) == LOBYTE(word2)) {
+    if (IsDBCSLeadByte32(LOBYTE(word1))) {
+      return (word1 != word2);
+    }
+    return FALSE;
+  }
+  return TRUE;
+}
+
+/***********************************************************************
+ *           ChrCmpW   
+ * This fuction returns FALSE if both words match, TRUE otherwise...
+ */
+static BOOL32 ChrCmpW( WORD word1, WORD word2) {
+  return (word1 != word2);
+}
+
+
diff --git a/misc/ddeml.c b/misc/ddeml.c
index fdd4215..7f36086 100644
--- a/misc/ddeml.c
+++ b/misc/ddeml.c
@@ -145,6 +145,38 @@
     return 0;
 }
 
+/*****************************************************************
+ * DdeQueryString32A [USER32.113]
+ */
+DWORD WINAPI DdeQueryString32A(DWORD idInst, HSZ hsz, LPSTR psz, DWORD cchMax, INT32 iCodePage)
+{
+    FIXME(ddeml,
+         "(%ld, 0x%lx, %p, %ld, %d): stub\n",
+         idInst,
+         hsz,
+         psz, 
+         cchMax,
+         iCodePage);
+
+    return 0;
+}
+
+/*****************************************************************
+ * DdeQueryString32W [USER32.114]
+ */
+DWORD WINAPI DdeQueryString32W(DWORD idInst, HSZ hsz, LPWSTR psz, DWORD cchMax, INT32 iCodePage)
+{
+    FIXME(ddeml,
+         "(%ld, 0x%lx, %p, %ld, %d): stub\n",
+         idInst,
+         hsz,
+         psz, 
+         cchMax,
+         iCodePage);
+
+    return 0;
+}
+
 
 /*****************************************************************
  *            DdeDisconnectList (DDEML.6)
@@ -211,14 +243,38 @@
 }
 
 /*****************************************************************
- *            DdeCreateDataHandle (DDEML.14)
+ *            DdeCreateDataHandle16 (DDEML.14)
  */
-HDDEDATA WINAPI DdeCreateDataHandle( DWORD idInst, LPBYTE pSrc, DWORD cb, 
+HDDEDATA WINAPI DdeCreateDataHandle16( DWORD idInst, LPBYTE pSrc, DWORD cb, 
                                      DWORD cbOff, HSZ hszItem, UINT16 wFmt, 
                                      UINT16 afCmd )
 {
-    FIXME( ddeml, "(%ld,%p,%ld,%ld,%ld,%d,%d): stub\n",idInst,pSrc,cb,cbOff,
-           hszItem, wFmt, afCmd );
+    return DdeCreateDataHandle32(idInst,
+                                pSrc,
+                                cb,
+                                cbOff,
+                                hszItem,
+                                wFmt,
+                                afCmd);
+}
+
+/*****************************************************************
+ *            DdeCreateDataHandle32 (USER32.94)
+ */
+HDDEDATA WINAPI DdeCreateDataHandle32( DWORD idInst, LPBYTE pSrc, DWORD cb, 
+                                       DWORD cbOff, HSZ hszItem, UINT32 wFmt, 
+                                       UINT32 afCmd )
+{
+    FIXME( ddeml,
+          "(%ld,%p,%ld,%ld,0x%lx,%d,%d): stub\n",
+          idInst,
+          pSrc,
+          cb,
+          cbOff,
+           hszItem,
+          wFmt, 
+          afCmd );
+
     return 0;
 }
 
@@ -448,29 +504,55 @@
 
 
 /*****************************************************************
- *            DdeAccessData (DDEML.17)
+ *            DdeAccessData16 (DDEML.17)
  */
-LPBYTE WINAPI DdeAccessData( HDDEDATA hData, LPDWORD pcbDataSize )
+LPBYTE WINAPI DdeAccessData16( HDDEDATA hData, LPDWORD pcbDataSize )
 {
-     FIXME( ddeml, "empty stub\n" );
+     return DdeAccessData32(hData, pcbDataSize);
+}
+
+/*****************************************************************
+ *            DdeAccessData32 (USER32.88)
+ */
+LPBYTE WINAPI DdeAccessData32( HDDEDATA hData, LPDWORD pcbDataSize )
+{
+     FIXME( ddeml, "(%ld,%p): stub\n", hData, pcbDataSize);
      return 0;
 }
 
 /*****************************************************************
- *            DdeUnaccessData (DDEML.18)
+ *            DdeUnaccessData16 (DDEML.18)
  */
-BOOL16 WINAPI DdeUnaccessData( HDDEDATA hData )
+BOOL16 WINAPI DdeUnaccessData16( HDDEDATA hData )
 {
-     FIXME( ddeml, "empty stub\n" );
+     return DdeUnaccessData32(hData);
+}
+
+/*****************************************************************
+ *            DdeUnaccessData32 (USER32.118)
+ */
+BOOL32 WINAPI DdeUnaccessData32( HDDEDATA hData )
+{
+     FIXME( ddeml, "(0x%lx): stub\n", hData);
+
      return 0;
 }
 
 /*****************************************************************
- *            DdeEnableCallback (DDEML.26)
+ *            DdeEnableCallback16 (DDEML.26)
  */
-BOOL16 WINAPI DdeEnableCallback( DWORD idInst, HCONV hConv, UINT16 wCmd )
+BOOL16 WINAPI DdeEnableCallback16( DWORD idInst, HCONV hConv, UINT16 wCmd )
 {
-     FIXME( ddeml, "empty stub\n" );
+     return DdeEnableCallback32(idInst, hConv, wCmd);
+}
+
+/*****************************************************************
+ *            DdeEnableCallback32 (USER32.99)
+ */
+BOOL32 WINAPI DdeEnableCallback32( DWORD idInst, HCONV hConv, UINT32 wCmd )
+{
+     FIXME( ddeml, "(%ld, 0x%lx, %d) stub\n", idInst, hConv, wCmd);
+
      return 0;
 }
 
@@ -531,11 +613,19 @@
 
 
 /*****************************************************************
- *            DdeCmpStringHandles (DDEML.36)
+ *            DdeCmpStringHandles16 (DDEML.36)
  */
-int WINAPI DdeCmpStringHandles( HSZ hsz1, HSZ hsz2 )
+int WINAPI DdeCmpStringHandles16( HSZ hsz1, HSZ hsz2 )
 {
-     FIXME( ddeml, "empty stub\n" );
+     return DdeCmpStringHandles32(hsz1, hsz2);
+}
+
+/*****************************************************************
+ *            DdeCmpStringHandles32 (USER32.91)
+ */
+int WINAPI DdeCmpStringHandles32( HSZ hsz1, HSZ hsz2 )
+{
+     FIXME( ddeml, "(0x%lx, 0x%lx): stub\n", hsz1, hsz2 );
      return 0;
 }
 
diff --git a/misc/network.c b/misc/network.c
index 85e3095..de63eaf 100644
--- a/misc/network.c
+++ b/misc/network.c
@@ -761,3 +761,64 @@
 	FIXME(mpr,"(0x%08lx),stub!\n",x);
 	return 0;
 }
+
+/*****************************************************************
+ *  WNetCancelConnection232A [MPR.53]
+ */
+DWORD WINAPI WNetCancelConnection232A(
+  LPCSTR lpName, 
+  DWORD dwFlags, 
+  BOOL32 fForce) {
+
+  FIXME(wnet,": stub\n");
+  return WN_SUCCESS;
+}
+
+/*****************************************************************
+ *  WNetCancelConnection232W [MPR.54]
+ */
+DWORD WINAPI WNetCancelConnection232W(
+  LPCWSTR lpName, 
+  DWORD dwFlags, 
+  BOOL32 fForce) {
+
+  FIXME(wnet,": stub\n");
+  return WN_SUCCESS;
+}
+
+/*****************************************************************
+ *  WNetCancelConnection32A [MPR.55]
+ */
+DWORD WINAPI WNetCancelConnection32A(
+  LPCSTR lpName, 
+  DWORD dwFlags, 
+  BOOL32 fForce) {
+
+  FIXME(wnet,": stub\n");
+  return WN_SUCCESS;
+}
+
+/*****************************************************************
+ *  WNetCancelConnection32W [MPR.56]
+ */
+DWORD WINAPI WNetCancelConnection32W(
+  LPCWSTR lpName, 
+  DWORD dwFlags, 
+  BOOL32 fForce) {
+
+  FIXME(wnet,": stub\n");
+  return WN_SUCCESS;
+}
+
+/*****************************************************************
+ *  WNetGetUser32W [MPR.87]
+ */
+DWORD WINAPI WNetGetUser32W(
+  LPCWSTR  lpName,
+  LPWSTR   lpUserName,
+  LPDWORD  lpnLength) {
+
+  FIXME(wnet,": stub\n");
+       SetLastError(WN_NO_NETWORK);
+  return WN_NO_NETWORK;
+}
diff --git a/misc/printdrv.c b/misc/printdrv.c
index 1af6744..50bb32b 100644
--- a/misc/printdrv.c
+++ b/misc/printdrv.c
@@ -293,6 +293,18 @@
 }
 
 
+/*****************************************************************************
+ *          DeviceCapabilities32W 
+ */
+INT32 WINAPI DeviceCapabilities32W(LPCWSTR pDevice, LPCWSTR pPort,
+                                   WORD fwCapability, LPWSTR pOutput,
+                                   const DEVMODE32W *pDevMode)
+{
+    FIXME(print,"(%p,%p,%d,%p,%p): stub\n",
+          pDevice, pPort, fwCapability, pOutput, pDevMode);
+    return -1;
+}
+
 /******************************************************************
  *              DocumentProperties32A   [WINSPOOL.155]
  *
@@ -308,6 +320,20 @@
 }
 
 
+/*****************************************************************************
+ *          DocumentProperties32W 
+ */
+LONG WINAPI DocumentProperties32W(HWND32 hWnd, HANDLE32 hPrinter,
+                                  LPWSTR pDeviceName,
+                                  LPDEVMODE32W pDevModeOutput,
+                                  LPDEVMODE32W pDevModeInput, DWORD fMode)
+{
+    FIXME(print,"(%d,%d,%s,%p,%p,%ld): stub\n",
+          hWnd,hPrinter,pDeviceName,pDevModeOutput,pDevModeInput,fMode);
+    return -1;
+}
+
+
 /******************************************************************
  *              OpenPrinter32A        [WINSPOOL.196]
  *
@@ -414,3 +440,278 @@
     return FALSE;
 }
 
+/******************************************************************************
+ *    SetPrinter32W  [WINSPOOL.214]
+ */
+BOOL32 WINAPI
+SetPrinter32W(
+  HANDLE32  hPrinter,
+  DWORD     Level,
+  LPBYTE    pPrinter,
+  DWORD     Command) {
+
+       FIXME(print,"():stub\n");
+  SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+       return FALSE;
+}
+
+/******************************************************************************
+ *    WritePrinter32  [WINSPOOL.223]
+ */
+BOOL32 WINAPI
+WritePrinter32( 
+  HANDLE32  hPrinter,
+  LPVOID  pBuf,
+  DWORD   cbBuf,
+  LPDWORD pcWritten) {
+
+       FIXME(print,"():stub\n");
+  SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+       return FALSE;
+}
+
+/*****************************************************************************
+ *          AddForm32A  [WINSPOOL.103]
+ */
+BOOL32 WINAPI AddForm32A(HANDLE32 hPrinter, DWORD Level, LPBYTE pForm)
+{
+    FIXME(print, "(%d,%ld,%p): stub\n", hPrinter, Level, pForm);
+    return 1;
+}
+
+/*****************************************************************************
+ *          AddForm32W  [WINSPOOL.104]
+ */
+BOOL32 WINAPI AddForm32W(HANDLE32 hPrinter, DWORD Level, LPBYTE pForm)
+{
+    FIXME(print, "(%d,%ld,%p): stub\n", hPrinter, Level, pForm);
+    return 1;
+}
+
+/*****************************************************************************
+ *          AddJob32A  [WINSPOOL.105]
+ */
+BOOL32 WINAPI AddJob32A(HANDLE32 hPrinter, DWORD Level, LPBYTE pData,
+                        DWORD cbBuf, LPDWORD pcbNeeded)
+{
+    FIXME(print, "(%d,%ld,%p,%ld,%p): stub\n", hPrinter, Level, pData, cbBuf,
+          pcbNeeded);
+    return 1;
+}
+
+/*****************************************************************************
+ *          AddJob32W  [WINSPOOL.106]
+ */
+BOOL32 WINAPI AddJob32W(HANDLE32 hPrinter, DWORD Level, LPBYTE pData, DWORD cbBuf,
+                        LPDWORD pcbNeeded)
+{
+    FIXME(print, "(%d,%ld,%p,%ld,%p): stub\n", hPrinter, Level, pData, cbBuf,
+          pcbNeeded);
+    return 1;
+}
+
+/*****************************************************************************
+ *          AddPrinter32A  [WINSPOOL.117]
+ */
+HANDLE32 WINAPI AddPrinter32A(LPSTR pName, DWORD Level, LPBYTE pPrinter)
+{
+    FIXME(print, "(%s,%ld,%p): stub\n", pName, Level, pPrinter);
+    return NULL;
+}
+
+/*****************************************************************************
+ *          AddPrinter32W  [WINSPOOL.122]
+ */
+HANDLE32 WINAPI AddPrinter32W(LPWSTR pName, DWORD Level, LPBYTE pPrinter)
+{
+    FIXME(print, "(%p,%ld,%p): stub\n", pName, Level, pPrinter);
+    return 0;
+}
+
+
+/*****************************************************************************
+ *          ClosePrinter32  [WINSPOOL.126]
+ */
+BOOL32 WINAPI ClosePrinter32(HANDLE32 hPrinter)
+{
+    FIXME(print, "(%d): stub\n", hPrinter);
+    return 1;
+}
+
+/*****************************************************************************
+ *          DeleteForm32A  [WINSPOOL.133]
+ */
+BOOL32 WINAPI DeleteForm32A(HANDLE32 hPrinter, LPSTR pFormName)
+{
+    FIXME(print, "(%d,%s): stub\n", hPrinter, pFormName);
+    return 1;
+}
+
+/*****************************************************************************
+ *          DeleteForm32W  [WINSPOOL.134]
+ */
+BOOL32 WINAPI DeleteForm32W(HANDLE32 hPrinter, LPWSTR pFormName)
+{
+    FIXME(print, "(%d,%s): stub\n", hPrinter, pFormName);
+    return 1;
+}
+
+/*****************************************************************************
+ *          DeletePrinter32  [WINSPOOL.143]
+ */
+BOOL32 DeletePrinter32(HANDLE32 hPrinter)
+{
+    FIXME(print, "(%d): stub\n", hPrinter);
+    return 1;
+}
+
+/*****************************************************************************
+ *          SetPrinter32A  [WINSPOOL.211]
+ */
+BOOL32 WINAPI SetPrinter32A(HANDLE32 hPrinter, DWORD Level, LPBYTE pPrinter,
+                           DWORD Command)
+{
+    FIXME(print, "(%d,%ld,%p,%ld): stub\n",hPrinter,Level,pPrinter,Command);
+    return FALSE;
+}
+
+/*****************************************************************************
+ *          SetJob32A  [WINSPOOL.209]
+ */
+BOOL32 WINAPI SetJob32A(HANDLE32 hPrinter, DWORD JobId, DWORD Level,
+                       LPBYTE pJob, DWORD Command)
+{
+    FIXME(print, "(%d,%ld,%ld,%p,%ld): stub\n",hPrinter,JobId,Level,pJob,
+         Command);
+    return FALSE;
+}
+
+/*****************************************************************************
+ *          SetJob32W  [WINSPOOL.210]
+ */
+BOOL32 WINAPI SetJob32W(HANDLE32 hPrinter, DWORD JobId, DWORD Level,
+                       LPBYTE pJob, DWORD Command)
+{
+    FIXME(print, "(%d,%ld,%ld,%p,%ld): stub\n",hPrinter,JobId,Level,pJob,
+         Command);
+    return FALSE;
+}
+
+/*****************************************************************************
+ *          GetForm32A  [WINSPOOL.181]
+ */
+BOOL32 WINAPI GetForm32A(HANDLE32 hPrinter, LPSTR pFormName, DWORD Level,
+                 LPBYTE pForm, DWORD cbBuf, LPDWORD pcbNeeded)
+{
+    FIXME(print, "(%d,%s,%ld,%p,%ld,%p): stub\n",hPrinter,pFormName,
+         Level,pForm,cbBuf,pcbNeeded); 
+    return FALSE;
+}
+
+/*****************************************************************************
+ *          GetForm32W  [WINSPOOL.182]
+ */
+BOOL32 WINAPI GetForm32W(HANDLE32 hPrinter, LPWSTR pFormName, DWORD Level,
+                 LPBYTE pForm, DWORD cbBuf, LPDWORD pcbNeeded)
+{
+    FIXME(print, "(%d,%s,%ld,%p,%ld,%p): stub\n",hPrinter,pFormName,
+         Level,pForm,cbBuf,pcbNeeded);
+    return FALSE;
+}
+
+/*****************************************************************************
+ *          SetForm32A  [WINSPOOL.207]
+ */
+BOOL32 WINAPI SetForm32A(HANDLE32 hPrinter, LPSTR pFormName, DWORD Level,
+                        LPBYTE pForm)
+{
+    FIXME(print, "(%d,%s,%ld,%p): stub\n",hPrinter,pFormName,Level,pForm);
+    return FALSE;
+}
+
+/*****************************************************************************
+ *          SetForm32W  [WINSPOOL.208]
+ */
+BOOL32 WINAPI SetForm32W(HANDLE32 hPrinter, LPWSTR pFormName, DWORD Level,
+                        LPBYTE pForm)
+{
+    FIXME(print, "(%d,%p,%ld,%p): stub\n",hPrinter,pFormName,Level,pForm);
+    return FALSE;
+}
+
+/*****************************************************************************
+ *          ReadPrinter32  [WINSPOOL.202]
+ */
+BOOL32 WINAPI ReadPrinter32(HANDLE32 hPrinter, LPVOID pBuf, DWORD cbBuf,
+                           LPDWORD pNoBytesRead)
+{
+    FIXME(print, "(%d,%p,%ld,%p): stub\n",hPrinter,pBuf,cbBuf,pNoBytesRead);
+    return FALSE;
+}
+
+/*****************************************************************************
+ *          ResetPrinter32A  [WINSPOOL.203]
+ */
+BOOL32 WINAPI ResetPrinter32A(HANDLE32 hPrinter, LPPRINTER_DEFAULTS32A pDefault)
+{
+    FIXME(print, "(%d, %p): stub\n", hPrinter, pDefault);
+    return FALSE;
+}
+
+/*****************************************************************************
+ *          ResetPrinter32W  [WINSPOOL.204]
+ */
+BOOL32 WINAPI ResetPrinter32W(HANDLE32 hPrinter, LPPRINTER_DEFAULTS32W pDefault)
+{
+    FIXME(print, "(%d, %p): stub\n", hPrinter, pDefault);
+    return FALSE;
+}
+
+/*****************************************************************************
+ *          GetPrinter32A  [WINSPOOL.187]
+ */
+BOOL32 WINAPI GetPrinter32A(HANDLE32 hPrinter, DWORD Level, LPBYTE pPrinter,
+                    DWORD cbBuf, LPDWORD pcbNeeded)
+{
+    FIXME(print, "(%d,%ld,%p,%ld,%p): stub\n", hPrinter, Level, pPrinter, 
+         cbBuf, pcbNeeded);
+    return FALSE;
+}
+
+/*****************************************************************************
+ *          GetPrinter32W  [WINSPOOL.194]
+ */
+BOOL32 WINAPI GetPrinter32W(HANDLE32 hPrinter, DWORD Level, LPBYTE pPrinter,
+                    DWORD cbBuf, LPDWORD pcbNeeded)
+{
+    FIXME(print, "(%d,%ld,%p,%ld,%p): stub\n", hPrinter, Level, pPrinter,
+          cbBuf, pcbNeeded);
+    return FALSE;
+}
+
+/*****************************************************************************
+ *          GetPrinterDriver32A  [WINSPOOL.190]
+ */
+BOOL32 WINAPI GetPrinterDriver32A(HANDLE32 hPrinter, LPSTR pEnvironment,
+                                 DWORD Level, LPBYTE pDriverInfo,
+                                 DWORD cbBuf, LPDWORD pcbNeeded)
+{
+    FIXME(print, "(%d,%s,%ld,%p,%ld,%p): stub\n",hPrinter,pEnvironment,
+         Level,pDriverInfo,cbBuf, pcbNeeded);
+    return FALSE;
+}
+
+/*****************************************************************************
+ *          GetPrinterDriver32W  [WINSPOOL.193]
+ */
+BOOL32 WINAPI GetPrinterDriver32W(HANDLE32 hPrinter, LPWSTR pEnvironment,
+                                  DWORD Level, LPBYTE pDriverInfo, 
+                                  DWORD cbBuf, LPDWORD pcbNeeded)
+{
+    FIXME(print, "(%d,%p,%ld,%p,%ld,%p): stub\n",hPrinter,pEnvironment,
+          Level,pDriverInfo,cbBuf, pcbNeeded);
+    return FALSE;
+}
+
+
+
diff --git a/misc/tapi32.c b/misc/tapi32.c
index 87e45fb..e5e223c 100644
--- a/misc/tapi32.c
+++ b/misc/tapi32.c
@@ -40,3 +40,37 @@
     *lpdwAPIVersion = dwAPIHighVersion;
     return 0;
 }
+
+/*************************************************************************
+ * lineRedirect32 [TAPI32.53]
+ * 
+ */
+LONG WINAPI lineRedirect32(
+  HANDLE32* hCall,
+  LPCSTR lpszDestAddress,
+  DWORD  dwCountryCode) {
+
+  FIXME(comm, ": stub.\n");
+  return -1;
+/*  return LINEERR_OPERATIONFAILED; */
+}
+
+/*************************************************************************
+ * tapiRequestMakeCall32 [TAPI32.113]
+ * 
+ */
+LONG WINAPI tapiRequestMakeCall32(
+  LPCSTR lpszDestAddress,
+  LPCSTR lpszAppName,
+  LPCSTR lpszCalledParty,
+  LPCSTR lpszComment) {
+
+  FIXME(comm, ": stub.\n");
+  return -1;
+/*  return TAPIERR_REQUESTQUEUEFULL; */
+}
+
+
+
+
+
diff --git a/objects/bitmap.c b/objects/bitmap.c
index d10c7c7..f069750 100644
--- a/objects/bitmap.c
+++ b/objects/bitmap.c
@@ -928,3 +928,22 @@
     return MAKELONG( size.cx, size.cy );
 }
 
+/***********************************************************************
+ *           MaskBlt32 [GDI32.252]
+ */
+BOOL32 WINAPI MaskBlt32(HDC32 hdcDest, 
+                       INT32 nXDest, INT32 nYDest, 
+                       INT32 nWidth, INT32 nHeight, 
+                       HDC32 hdcSource, 
+                       INT32 nXSrc, INT32 nYSrc,
+                       HBITMAP32 hbmMask, 
+                       INT32 xMask, INT32 yMask, 
+                       DWORD dwRop)
+{
+    FIXME(bitmap, "(%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%ld): stub\n",
+          hdcDest,nXDest,nYDest,nWidth,nHeight,hdcSource,nXSrc,nYSrc,
+          hbmMask,xMask,yMask,dwRop);
+ 
+    return 1;
+}
+
diff --git a/objects/dc.c b/objects/dc.c
index b38663b..eb98918 100644
--- a/objects/dc.c
+++ b/objects/dc.c
@@ -1250,3 +1250,12 @@
     return DCB_RESET | DCB_DISABLE; /* bounding rectangle always empty and disabled*/
 }
 
+/***********************************************************************
+ *           SetBoundsRect32    (GDI32.307)
+ */
+UINT32 WINAPI SetBoundsRect32(HDC32 hdc, const RECT32* rect, UINT32 flags)
+{
+    FIXME(dc, "(): stub\n");
+    return DCB_DISABLE;   /* bounding rectangle always empty */
+}
+
diff --git a/objects/enhmetafile.c b/objects/enhmetafile.c
index c57b127..b405ca1 100644
--- a/objects/enhmetafile.c
+++ b/objects/enhmetafile.c
@@ -39,6 +39,16 @@
 }
 
 /*****************************************************************************
+ *          GetEnhMetaFile32W  (GDI32.180)
+ */
+HENHMETAFILE32 WINAPI GetEnhMetaFile32W(
+             LPCWSTR lpszMetaFile)  /* filename of enhanced metafile */ 
+{
+  FIXME(metafile, "(%p): stub\n", lpszMetaFile);
+  return NULL;
+}
+
+/*****************************************************************************
  *        GetEnhMetaFileHeader  (GDI32.178)
  *
  *  If _buf_ is NULL, returns the size of buffer required.
diff --git a/objects/font.c b/objects/font.c
index 7c966f1..9e0d534 100644
--- a/objects/font.c
+++ b/objects/font.c
@@ -1020,7 +1020,17 @@
     return rtn;
 }
 
-
+/***********************************************************************
+ *           GetOutlineTextMetrics32W [GDI32.208]
+ */
+UINT32 WINAPI GetOutlineTextMetrics32W(
+    HDC32 hdc,    /* [in]  Handle of device context */
+    UINT32 cbData, /* [in]  Size of metric data array */
+    LPOUTLINETEXTMETRIC32W lpOTM)  /* [out] Address of metric data array */
+{
+    FIXME(font, "(%d,%d,%p): stub\n", hdc, cbData, lpOTM);
+    return 0; 
+}
 
 /***********************************************************************
  *           GetCharWidth16    (GDI.350)
diff --git a/objects/metafile.c b/objects/metafile.c
index 0bdbe9c..bbd95c5 100644
--- a/objects/metafile.c
+++ b/objects/metafile.c
@@ -1068,6 +1068,17 @@
   return MIN(nSize, h->mtSize);
 }
 
+/******************************************************************
+ *         GetWinMetaFileBits [GDI32.241]
+ */
+UINT32 WINAPI GetWinMetaFileBits(HENHMETAFILE32 hemf,
+                                UINT32 cbBuffer, LPBYTE lpbBuffer,
+                                INT32 fnMapMode, HDC32 hdcRef)
+{
+  FIXME(metafile, "(%d,%d,%p,%d,%d): stub\n",
+        hemf, cbBuffer, lpbBuffer, fnMapMode, hdcRef);
+  return 0;
+}
 
 /******************************************************************
  *         MF_Meta_CreateRegion
diff --git a/relay32/comctl32.spec b/relay32/comctl32.spec
index bcf84c1..3a2f96e 100644
--- a/relay32/comctl32.spec
+++ b/relay32/comctl32.spec
@@ -24,12 +24,12 @@
  16 stdcall CreateUpDownControl(long long long long long long long long long long long long) CreateUpDownControl
  17 stdcall InitCommonControls() InitCommonControls
  18 stub CreatePropertySheetPage
- 19 stub CreatePropertySheetPageA
- 20 stub CreatePropertySheetPageW
+ 19 stdcall CreatePropertySheetPageA(ptr) CreatePropertySheetPage32A
+ 20 stdcall CreatePropertySheetPageW(ptr) CreatePropertySheetPage32W
  21 stdcall CreateStatusWindow(long str long long) CreateStatusWindow32AW
  22 stdcall CreateStatusWindowW(long wstr long long) CreateStatusWindow32W
  23 stdcall CreateToolbarEx(long long long long long long ptr long long long long long long) CreateToolbarEx
- 24 stub DestroyPropertySheetPage
+ 24 stdcall DestroyPropertySheetPage(long) DestroyPropertySheetPage32
  25 stdcall DllGetVersion(ptr) COMCTL32_DllGetVersion
  26 stub DllInstall
  27 stdcall DrawStatusText(long ptr ptr long) DrawStatusText32AW
@@ -89,8 +89,8 @@
  81 stdcall InitCommonControlsEx(ptr) InitCommonControlsEx
  82 stub InitializeFlatSB
  83 stub PropertySheet
- 84 stub PropertySheetA
- 85 stub PropertySheetW
+ 84 stdcall PropertySheetA(ptr) PropertySheet32A
+ 85 stdcall PropertySheetW(ptr) PropertySheet32W
  86 stub UninitializeFlatSB
  87 stub _TrackMouseEvent
 
@@ -138,20 +138,20 @@
 342 stdcall SendNotifyEx(long long long ptr long) COMCTL32_SendNotifyEx
 
 350 stdcall StrChrA(str str) COMCTL32_StrChrA
-351 stub StrRChrA
-352 stub StrCmpNA
+351 stdcall StrRChrA(str str long) COMCTL32_StrRChrA
+352 stdcall StrCmpNA(str str long) COMCTL32_StrCmpNA
 353 stub StrCmpNIA
-354 stub StrStrA
+354 stdcall StrStrA(str str) COMCTL32_StrStrA
 355 stdcall StrStrIA(str str) COMCTL32_StrStrIA
-356 stub StrCSpnA
+356 stdcall StrCSpnA(str str) COMCTL32_StrCSpnA
 357 stdcall StrToIntA(str) COMCTL32_StrToIntA
-358 stub StrChrW
-359 stub StrRChrW
-360 stub StrCmpNW
+358 stdcall StrChrW(wstr long) COMCTL32_StrChrW
+359 stdcall StrRChrW(wstr wstr long) COMCTL32_StrRChrW
+360 stdcall StrCmpNW(wstr wstr long) COMCTL32_StrCmpNW
 361 stub StrCmpNIW
-362 stub StrStrW
+362 stdcall StrStrW(wstr wstr) COMCTL32_StrStrW
 363 stub StrStrIW
-364 stub StrSpnW
+364 stdcall StrSpnW(wstr wstr) COMCTL32_StrSpnW
 365 stub StrToIntW
 366 stub StrChrIA
 367 stub StrChrIW
diff --git a/relay32/gdi32.spec b/relay32/gdi32.spec
index 6a9dc1e..d8e1d87 100644
--- a/relay32/gdi32.spec
+++ b/relay32/gdi32.spec
@@ -2,7 +2,7 @@
 type	win32
 init	MAIN_GdiInit
 
-  0 stub AbortDoc
+  0 stdcall AbortDoc(long) AbortDoc32
   1 stdcall AbortPath(long) AbortPath32
   2 stdcall AddFontResourceA(str) AddFontResource32A
   3 stub AddFontResourceTracking
@@ -10,7 +10,7 @@
   5 stub AngleArc
   6 stdcall AnimatePalette(long long long ptr) AnimatePalette32
   7 stdcall Arc(long long long long long long long long long) Arc32
-  8 stub ArcTo
+  8 stdcall ArcTo(long long long long long long long long long) ArcTo32
   9 stdcall BeginPath(long) BeginPath32
  10 stdcall BitBlt(long long long long long long long long long) BitBlt32
  11 stub CancelDC
@@ -43,8 +43,8 @@
  38 stdcall CreateDiscardableBitmap(long long long) CreateDiscardableBitmap32
  39 stdcall CreateEllipticRgn(long long long long) CreateEllipticRgn32
  40 stdcall CreateEllipticRgnIndirect(ptr) CreateEllipticRgnIndirect32
- 41 stdcall CreateEnhMetaFileA(long ptr ptr ptr) CreateEnhMetaFile32A
- 42 stub CreateEnhMetaFileW
+ 41 stdcall CreateEnhMetaFileA(long str ptr str) CreateEnhMetaFile32A
+ 42 stdcall CreateEnhMetaFileW(long wstr ptr wstr) CreateEnhMetaFile32W
  43 stdcall CreateFontA(long long long long long long long long long long long long long str) CreateFont32A
  44 stdcall CreateFontIndirectA(ptr) CreateFontIndirect32A
  45 stdcall CreateFontIndirectW(ptr) CreateFontIndirect32W
@@ -54,7 +54,7 @@
  49 stdcall CreateICA(str str str ptr) CreateIC32A
  50 stdcall CreateICW(wstr wstr wstr ptr) CreateIC32W
  51 stdcall CreateMetaFileA(str) CreateMetaFile32A
- 52 stub CreateMetaFileW
+ 52 stdcall CreateMetaFileW(wstr) CreateMetaFile32W
  53 stdcall CreatePalette(ptr) CreatePalette32
  54 stdcall CreatePatternBrush(long) CreatePatternBrush32
  55 stdcall CreatePen(long long long) CreatePen32
@@ -182,7 +182,7 @@
 177 stdcall GetEnhMetaFileDescriptionW(long long ptr) GetEnhMetaFileDescription32W
 178 stdcall GetEnhMetaFileHeader(long long ptr) GetEnhMetaFileHeader
 179 stdcall GetEnhMetaFilePaletteEntries (long long ptr) GetEnhMetaFilePaletteEntries
-180 stub GetEnhMetaFileW
+180 stdcall GetEnhMetaFileW(wstr) GetEnhMetaFile32W
 181 stdcall GetFontData(long long long ptr long) GetFontData32
 182 stdcall GetFontLanguageInfo(long) GetFontLanguageInfo32
 183 stub GetFontResourceInfo
@@ -210,7 +210,7 @@
 205 stdcall GetObjectType(long) GetObjectType
 206 stdcall GetObjectW(long long ptr) GetObject32W
 207 stdcall GetOutlineTextMetricsA(long long ptr) GetOutlineTextMetrics32A
-208 stub GetOutlineTextMetricsW
+208 stdcall GetOutlineTextMetricsW(long long ptr) GetOutlineTextMetrics32W
 209 stdcall GetPaletteEntries(long long long ptr) GetPaletteEntries32
 210 stdcall GetPath(long ptr ptr long) GetPath32
 211 stdcall GetPixel(long long long) GetPixel32
@@ -243,7 +243,7 @@
 238 stub GetTransform
 239 stdcall GetViewportExtEx(long ptr) GetViewportExtEx32
 240 stdcall GetViewportOrgEx(long ptr) GetViewportOrgEx32
-241 stub GetWinMetaFileBits
+241 stdcall GetWinMetaFileBits(long long ptr long long) GetWinMetaFileBits
 242 stdcall GetWindowExtEx(long ptr) GetWindowExtEx32
 243 stdcall GetWindowOrgEx(long ptr) GetWindowOrgEx32
 244 stdcall GetWorldTransform(long ptr) GetWorldTransform
@@ -254,7 +254,7 @@
 249 stdcall LineTo(long long long) LineTo32
 250 stub LoadImageColorMatcherA
 251 stub LoadImageColorMatcherW
-252 stub MaskBlt
+252 stdcall MaskBlt(long long long long long long long long long long long long) MaskBlt32
 253 stdcall ModifyWorldTransform(long ptr long) ModifyWorldTransform
 254 stdcall MoveToEx(long long long ptr) MoveToEx32
 255 stdcall OffsetClipRgn(long long long) OffsetClipRgn32
@@ -279,7 +279,7 @@
 274 stub PolyTextOutW
 275 stdcall Polygon(long ptr long) Polygon32
 276 stdcall Polyline(long ptr long) Polyline32
-277 stub PolylineTo
+277 stdcall PolylineTo(long ptr long) PolylineTo32
 278 stdcall PtInRegion(long long long) PtInRegion32
 279 stdcall PtVisible(long long long) PtVisible32
 280 stdcall RealizePalette(long) RealizePalette32
@@ -309,7 +309,7 @@
 304 stdcall SetBitmapDimensionEx(long long long ptr) SetBitmapDimensionEx32
 305 stdcall SetBkColor(long long) SetBkColor32
 306 stdcall SetBkMode(long long) SetBkMode32
-307 stub SetBoundsRect
+307 stdcall SetBoundsRect(long ptr long) SetBoundsRect32
 308 stdcall SetBrushOrgEx(long long long ptr) SetBrushOrgEx
 309 stub SetColorAdjustment
 310 stub SetColorSpace
@@ -350,7 +350,7 @@
 345 stdcall SetWindowOrgEx(long long long ptr) SetWindowOrgEx32
 346 stdcall SetWorldTransform(long ptr) SetWorldTransform
 347 stdcall StartDocA(long ptr) StartDoc32A
-348 stub StartDocW
+348 stdcall StartDocW(long ptr) StartDoc32W
 349 stdcall StartPage(long) StartPage32 
 350 stdcall StretchBlt(long long long long long long long long long long long) StretchBlt32
 351 stdcall StretchDIBits(long long long long long long long long long ptr ptr long long) StretchDIBits32
diff --git a/relay32/kernel32.spec b/relay32/kernel32.spec
index 015027d..bf27de1 100644
--- a/relay32/kernel32.spec
+++ b/relay32/kernel32.spec
@@ -585,6 +585,7 @@
 567 register RaiseException() RaiseException
 568 stdcall ReadConsoleA(long ptr long ptr ptr) ReadConsole32A
 569 stdcall ReadConsoleInputA(long ptr long ptr) ReadConsoleInput32A
+570 stdcall ReadConsoleInputW(long ptr long ptr) ReadConsoleInput32W 
 570 stub ReadConsoleInputW
 571 stub ReadConsoleOutputA
 572 stub ReadConsoleOutputAttribute
@@ -698,7 +699,7 @@
 680 stdcall SleepEx(long long) SleepEx
 681 stdcall SuspendThread(long) SuspendThread
 682 stdcall SystemTimeToFileTime(ptr ptr) SystemTimeToFileTime
-683 stub SystemTimeToTzSpecificLocalTime
+683 stdcall SystemTimeToTzSpecificLocalTime (ptr ptr ptr) SystemTimeToTzSpecificLocalTime32
 684 stdcall TerminateProcess(long long) TerminateProcess
 685 stdcall TerminateThread(long long) TerminateThread
 686 stub Thread32First
@@ -722,8 +723,8 @@
 704 stdcall UnlockFile(long long long long long) UnlockFile
 705 stub UnlockFileEx
 706 stdcall UnmapViewOfFile(ptr) UnmapViewOfFile
-707 stub UpdateResourceA
-708 stub UpdateResourceW
+707 stdcall UpdateResourceA(long str str long ptr long) UpdateResource32A
+708 stdcall UpdateResourceW(long wstr wstr long ptr long) UpdateResource32W
 709 stdcall VerLanguageNameA(long str long) VerLanguageName32A
 710 stdcall VerLanguageNameW(long wstr long) VerLanguageName32W
 711 stdcall VirtualAlloc(ptr long long long) VirtualAlloc
@@ -874,8 +875,8 @@
 # NT 4.0 additions
 856 stub CancelIo
 857 stub CancelWaitableTimer
-858 stub CopyFileExA
-859 stub CopyFileExW
+858 stdcall CopyFileExA (str str ptr ptr ptr long) CopyFileEx32A
+859 stdcall CopyFileExW (wstr wstr ptr ptr ptr long) CopyFileEx32W
 860 stub CreateFiber
 861 stub CreateWaitableTimerA
 862 stub CreateWaitableTimerW
diff --git a/relay32/mpr.spec b/relay32/mpr.spec
index 067f991..09fa6f4 100644
--- a/relay32/mpr.spec
+++ b/relay32/mpr.spec
@@ -53,10 +53,10 @@
 0050 stdcall WNetAddConnectionA(str str str) WNetAddConnection32A
 0051 stdcall WNetAddConnectionW(wstr wstr wstr) WNetAddConnection32W
 0052 stdcall WNetCachePassword(str long str long long) WNetCachePassword
-0053 stub WNetCancelConnection2A
-0054 stub WNetCancelConnection2W
-0055 stub WNetCancelConnectionA
-0056 stub WNetCancelConnectionW
+0053 stdcall WNetCancelConnection2A(str long long) WNetCancelConnection232A
+0054 stdcall WNetCancelConnection2W(wstr long long) WNetCancelConnection232W
+0055 stdcall WNetCancelConnectionA(str long) WNetCancelConnection32A
+0056 stdcall WNetCancelConnectionW(wstr long) WNetCancelConnection32W
 0057 stub WNetCloseEnum
 0058 stdcall WNetConnectionDialog1A(ptr) WNetConnectionDialog1_32A
 0059 stdcall WNetConnectionDialog1W(ptr) WNetConnectionDialog1_32W
@@ -87,7 +87,7 @@
 0084 stub WNetGetUniversalNameA
 0085 stub WNetGetUniversalNameW
 0086 stdcall WNetGetUserA(str ptr ptr) WNetGetUser32A
-0087 stub WNetGetUserW
+0087 stdcall WNetGetUserW(wstr wstr ptr) WNetGetUser32W
 0088 stub WNetLogoffA
 0089 stub WNetLogoffW
 0090 stub WNetLogonA
diff --git a/relay32/shell32.spec b/relay32/shell32.spec
index 1c86019..8e0a113 100644
--- a/relay32/shell32.spec
+++ b/relay32/shell32.spec
@@ -224,7 +224,7 @@
  216 stub ExtractVersionResource16W   # exported by name
  217 stub FindExeDlgProc   # exported by name
  218 stdcall FindExecutableA(ptr ptr ptr) FindExecutable32A   # exported by name
- 219 stub FindExecutableW   # exported by name
+ 219 stdcall FindExecutableW(wstr wstr wstr) FindExecutable32W   # exported by name
  220 stdcall FreeIconList(long) FreeIconList   # exported by name
  221 stub InternalExtractIconListA   # exported by name
  222 stub InternalExtractIconListW   # exported by name
@@ -300,7 +300,7 @@
  291 stdcall ShellExecuteEx (long) ShellExecuteEx32
  292 stdcall ShellExecuteExA (long) ShellExecuteEx32A
  293 stdcall ShellExecuteExW (long) ShellExecuteEx32W
- 294 stub ShellExecuteW
+ 294 stdcall ShellExecuteW (long wstr wstr wstr wstr long) ShellExecute32W
  295 stub ShellHookProc   # exported by name
  296 stdcall Shell_NotifyIcon(long ptr) Shell_NotifyIcon
  297 stdcall Shell_NotifyIconA(long ptr) Shell_NotifyIconA
diff --git a/relay32/tapi32.spec b/relay32/tapi32.spec
index 449df0c..3f45edd 100644
--- a/relay32/tapi32.spec
+++ b/relay32/tapi32.spec
@@ -53,7 +53,7 @@
  50 stub    linePark
  51 stub    linePickup
  52 stub    linePrepareAddToConference
- 53 stub    lineRedirect
+ 53 stdcall lineRedirect(long ptr long) lineRedirect32
  54 stub    lineRegisterRequestRecipient
  55 stub    lineReleaseUserUserInfo
  56 stub    lineRemoveFromConference
@@ -113,5 +113,5 @@
 110 stub    phoneShutdown
 111 stub    tapiGetLocationInfo
 112 stub    tapiRequestDrop
-113 stub    tapiRequestMakeCall
+113 stdcall tapiRequestMakeCall(str str str str) tapiRequestMakeCall32
 114 stub    tapiRequestMediaCall
diff --git a/relay32/user32.spec b/relay32/user32.spec
index 0109b93..08e282f 100644
--- a/relay32/user32.spec
+++ b/relay32/user32.spec
@@ -2,7 +2,7 @@
 type	win32
 init	MAIN_UserInit
 
-  1 stub ActivateKeyboardLayout
+  1 stdcall ActivateKeyboardLayout(long long) ActivateKeyboardLayout32
   2 stdcall AdjustWindowRect(ptr long long) AdjustWindowRect32
   3 stdcall AdjustWindowRectEx(ptr long long long) AdjustWindowRectEx32
   4 stdcall AnyPopup() AnyPopup32
@@ -89,18 +89,18 @@
  85 stub CreateWindowStationA
  86 stdcall CreateWindowStationW(wstr long long ptr) CreateWindowStation32W
  87 stub DdeAbandonTransaction
- 88 stub DdeAccessData
+ 88 stdcall DdeAccessData(long ptr) DdeAccessData32
  89 stub DdeAddData
  90 stdcall DdeClientTransaction(ptr long long long long long long ptr) DdeClientTransaction32
- 91 stub DdeCmpStringHandles
+ 91 stdcall DdeCmpStringHandles(long long) DdeCmpStringHandles32
  92 stdcall DdeConnect(long long long ptr) DdeConnect32
  93 stdcall DdeConnectList(long long long long ptr) DdeConnectList32
- 94 stub DdeCreateDataHandle
+ 94 stdcall DdeCreateDataHandle(long ptr long long long long long) DdeCreateDataHandle32
  95 stdcall DdeCreateStringHandleA(long str long) DdeCreateStringHandle32A
  96 stdcall DdeCreateStringHandleW(long wstr long) DdeCreateStringHandle32W
  97 stdcall DdeDisconnect(long) DdeDisconnect32
  98 stdcall DdeDisconnectList(long) DdeDisconnectList32
- 99 stub DdeEnableCallback
+ 99 stdcall DdeEnableCallback(long long long) DdeEnableCallback32
 100 stdcall DdeFreeDataHandle(long) DdeFreeDataHandle32
 101 stdcall DdeFreeStringHandle(long long) DdeFreeStringHandle32
 102 stdcall DdeGetData(long ptr long long) DdeGetData32
@@ -114,12 +114,12 @@
 110 stdcall DdePostAdvise(long long long) DdePostAdvise32
 111 stub DdeQueryConvInfo
 112 stdcall DdeQueryNextServer(long long) DdeQueryNextServer32
-113 stub DdeQueryStringA
-114 stub DdeQueryStringW
+113 stdcall DdeQueryStringA(long long ptr long long) DdeQueryString32A
+114 stdcall DdeQueryStringW(long long ptr long long) DdeQueryString32W
 115 stdcall DdeReconnect(long) DdeReconnect
 116 stub DdeSetQualityOfService
 117 stub DdeSetUserHandle
-118 stub DdeUnaccessData
+118 stdcall DdeUnaccessData(long) DdeUnaccessData32
 119 stdcall DdeUninitialize(long) DdeUninitialize32
 120 stdcall DefDlgProcA(long long long long) DefDlgProc32A
 121 stdcall DefDlgProcW(long long long long) DefDlgProc32W
@@ -164,7 +164,7 @@
 160 stdcall DrawIconEx(long long long long long long long long long) DrawIconEx32
 161 stdcall DrawMenuBar(long) DrawMenuBar32
 162 stdcall DrawStateA(long long ptr long long long long long long long) DrawState32A
-163 stub DrawStateW
+163 stdcall DrawStateW(long long ptr long long long long long long long) DrawState32W
 164 stdcall DrawTextA(long str long ptr long) DrawText32A
 165 stdcall DrawTextExA(long str long ptr long ptr) DrawTextEx32A
 166 stdcall DrawTextExW(long wstr long ptr long ptr) DrawTextEx32W
@@ -368,8 +368,8 @@
 364 stdcall LoadIconW(long wstr) LoadIcon32W
 365 stdcall LoadImageA(long str long long long long) LoadImage32A
 366 stdcall LoadImageW(long wstr long long long long) LoadImage32W
-367 stub LoadKeyboardLayoutA
-368 stub LoadKeyboardLayoutW
+367 stdcall LoadKeyboardLayoutA(str long) LoadKeyboardLayout32A
+368 stdcall LoadKeyboardLayoutW(wstr long) LoadKeyboardLayout32W
 369 stdcall LoadLocalFonts() LoadLocalFonts
 370 stdcall LoadMenuA(long str) LoadMenu32A
 371 stdcall LoadMenuIndirectA(ptr) LoadMenuIndirect32A
@@ -462,7 +462,7 @@
 458 stdcall SendMessageTimeoutW(long long long long ptr ptr) SendMessageTimeout32W
 459 stdcall SendMessageW(long long long long) SendMessage32W
 460 stdcall SendNotifyMessageA(long long long long) SendNotifyMessage32A
-461 stub SendNotifyMessageW
+461 stdcall SendNotifyMessageW(long long long long) SendNotifyMessage32W
 462 stub ServerSetFunctionPointers
 463 stdcall SetActiveWindow(long) SetActiveWindow32
 464 stdcall SetCapture(long) SetCapture32
@@ -549,7 +549,7 @@
 545 stdcall TileWindows(long long ptr long ptr) TileWindows
 546 stdcall ToAscii(long long ptr ptr long) ToAscii32
 547 stub ToAsciiEx
-548 stub ToUnicode
+548 stdcall ToUnicode(long long ptr wstr long long) ToUnicode32
 549 stdcall TrackPopupMenu(long long long long long long ptr) TrackPopupMenu32
 550 stdcall TrackPopupMenuEx(long long long long long ptr) TrackPopupMenuEx
 551 stdcall TranslateAccelerator(long long ptr) TranslateAccelerator32
diff --git a/relay32/winspool.spec b/relay32/winspool.spec
index 7de4008..a99a998 100644
--- a/relay32/winspool.spec
+++ b/relay32/winspool.spec
@@ -3,10 +3,10 @@
 
 101 stub ADVANCEDSETUPDIALOG
 102 stub AbortPrinter
-103 stub AddFormA
-104 stub AddFormW
-105 stub AddJobA
-106 stub AddJobW
+103 stdcall AddFormA(long long ptr) AddForm32A
+104 stdcall AddFormW(long long ptr) AddForm32W
+105 stdcall AddJobA(long long ptr long ptr) AddJob32A
+106 stdcall AddJobW(long long ptr long ptr) AddJob32W
 107 stdcall AddMonitorA(str long ptr) AddMonitor32A
 108 stub AddMonitorW
 109 stub AddPortA
@@ -17,24 +17,24 @@
 114 stub AddPrintProcessorW
 115 stub AddPrintProvidorA
 116 stub AddPrintProvidorW
-117 stub AddPrinterA
+117 stdcall AddPrinterA(str long ptr) AddPrinter32A
 118 stub AddPrinterConnectionA
 119 stub AddPrinterConnectionW
 120 stub AddPrinterDriverA
 121 stub AddPrinterDriverW
-122 stub AddPrinterW
+122 stdcall AddPrinterW(wstr long ptr) AddPrinter32W
 123 stub AdvancedDocumentPropertiesA
 124 stub AdvancedDocumentPropertiesW
 125 stub AdvancedSetupDialog
-126 stub ClosePrinter
+126 stdcall ClosePrinter(long) ClosePrinter32
 127 stub ConfigurePortA
 128 stub ConfigurePortW
 129 stub ConnectToPrinterDlg
 130 stub CreatePrinterIC
 131 stub DEVICECAPABILITIES
 132 stub DEVICEMODE
-133 stub DeleteFormA
-134 stub DeleteFormW
+133 stdcall DeleteFormA(long str) DeleteForm32A
+134 stdcall DeleteFormW(long wstr) DeleteForm32W
 135 stdcall DeleteMonitorA(str str str) DeleteMonitor32A
 136 stub DeleteMonitorW
 137 stdcall DeletePortA(str long str) DeletePort32A
@@ -43,7 +43,7 @@
 140 stub DeletePrintProcessorW
 141 stub DeletePrintProvidorA
 142 stub DeletePrintProvidorW
-143 stub DeletePrinter
+143 stdcall DeletePrinter(long) DeletePrinter32
 144 stub DeletePrinterConnectionA
 145 stub DeletePrinterConnectionW
 146 stdcall DeletePrinterDriverA(str str str) DeletePrinterDriver32A
@@ -52,7 +52,7 @@
 149 stub DevQueryPrint
 150 stub DeviceCapabilities
 151 stdcall DeviceCapabilitiesA(str str long ptr ptr) DeviceCapabilities32A
-152 stub DeviceCapabilitiesW
+152 stdcall DeviceCapabilitiesW(wstr wstr long wstr ptr) DeviceCapabilities32W
 153 stub DeviceMode
 154 stub DocumentEvent
 155 stdcall DocumentPropertiesA(long long ptr ptr ptr long) DocumentProperties32A
@@ -81,20 +81,20 @@
 178 stub FindFirstPrinterChangeNotification
 179 stub FindNextPrinterChangeNotification
 180 stub FreePrinterNotifyInfo
-181 stub GetFormA
-182 stub GetFormW
+181 stdcall GetFormA(long str long ptr long ptr) GetForm32A
+182 stdcall GetFormW(long wstr long ptr long ptr) GetForm32W
 183 stub GetJobA
 184 stub GetJobW
 185 stub GetPrintProcessorDirectoryA
 186 stub GetPrintProcessorDirectoryW
-187 stub GetPrinterA
+187 stdcall GetPrinterA(long long ptr long ptr) GetPrinter32A
 188 stub GetPrinterDataA
 189 stub GetPrinterDataW
-190 stub GetPrinterDriverA
+190 stdcall GetPrinterDriverA(long str long ptr long ptr) GetPrinterDriver32A
 191 stub GetPrinterDriverDirectoryA
 192 stub GetPrinterDriverDirectoryW
-193 stub GetPrinterDriverW
-194 stub GetPrinterW
+193 stdcall GetPrinterDriverW(long str long ptr long ptr) GetPrinterDriver32W
+194 stdcall GetPrinterW(long long ptr long ptr) GetPrinter32W
 195 stub InitializeDll
 196 stdcall OpenPrinterA(str ptr ptr) OpenPrinter32A
 197 stdcall OpenPrinterW(wstr ptr ptr) OpenPrinter32W
@@ -102,19 +102,19 @@
 199 stub PrinterMessageBoxA
 200 stub PrinterMessageBoxW
 201 stub PrinterProperties
-202 stub ReadPrinter
-203 stub ResetPrinterA
-204 stub ResetPrinterW
+202 stdcall ReadPrinter(long ptr long ptr) ReadPrinter32
+203 stdcall ResetPrinterA(long ptr) ResetPrinter32A
+204 stdcall ResetPrinterW(long ptr) ResetPrinter32W
 205 stub ScheduleJob
 206 stub SetAllocFailCount
-207 stub SetFormA
-208 stub SetFormW
-209 stub SetJobA
-210 stub SetJobW
-211 stub SetPrinterA
+207 stdcall SetFormA(long str long ptr) SetForm32A
+208 stdcall SetFormW(long wstr long ptr) SetForm32W
+209 stdcall SetJobA(long long long ptr long) SetJob32A
+210 stdcall SetJobW(long long long ptr long) SetJob32W
+211 stdcall SetPrinterA(long long ptr long) SetPrinter32A
 212 stub SetPrinterDataA
 213 stub SetPrinterDataW
-214 stub SetPrinterW
+214 stdcall SetPrinterW(long long ptr long) SetPrinter32W
 215 stub SpoolerDevQueryPrintW
 216 stub SpoolerInit
 217 stub StartDocDlgA
@@ -123,4 +123,4 @@
 220 stub StartDocPrinterW
 221 stub StartPagePrinter
 222 stub WaitForPrinterChange
-223 stub WritePrinter
+223 stdcall WritePrinter(long ptr long ptr) WritePrinter32
diff --git a/win32/console.c b/win32/console.c
index 089416c..5f0b9e7 100644
--- a/win32/console.c
+++ b/win32/console.c
@@ -1077,7 +1077,7 @@
 
 
 /******************************************************************************
- * ReadConsoleInputA [KERNEL32.569]  Reads data from a console
+ * ReadConsoleInput32A [KERNEL32.569]  Reads data from a console
  *
  * PARAMS
  *    hConsoleInput        [I] Handle to console input buffer
@@ -1180,6 +1180,17 @@
     return ret;
 }
 
+/***********************************************************************
+ *            ReadConsoleInput32W   (KERNEL32.570)
+ */
+BOOL32 WINAPI ReadConsoleInput32W(HANDLE32 hConsoleInput,
+                                LPINPUT_RECORD lpBuffer,
+                                DWORD nLength, LPDWORD lpNumberOfEventsRead)
+{
+    FIXME(console, "(%d,%p,%ld,%p): stub\n",hConsoleInput, lpBuffer, nLength,
+          lpNumberOfEventsRead);
+    return 0;
+}
 
 /***********************************************************************
  *            FlushConsoleInputBuffer   (KERNEL32.132)
diff --git a/win32/kernel32.c b/win32/kernel32.c
index b90a01a..5faf0d3 100644
--- a/win32/kernel32.c
+++ b/win32/kernel32.c
@@ -22,6 +22,7 @@
 #include "debug.h"
 #include "flatthunk.h"
 #include "syslevel.h"
+#include "winerror.h"
 
 
 /***********************************************************************
@@ -1104,3 +1105,38 @@
    }
 }
 
+/***********************************************************************
+ *           UpdateResource32A                 (KERNEL32.707)
+ */
+BOOL32 WINAPI UpdateResource32A(
+  HANDLE32  hUpdate,
+  LPCSTR  lpType,
+  LPCSTR  lpName,
+  WORD    wLanguage,
+  LPVOID  lpData,
+  DWORD   cbData) {
+
+  FIXME(win32, ": stub\n");
+  SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+  return FALSE;
+}
+
+/***********************************************************************
+ *           UpdateResource32W                 (KERNEL32.708)
+ */
+BOOL32 WINAPI UpdateResource32W(
+  HANDLE32  hUpdate,
+  LPCWSTR lpType,
+  LPCWSTR lpName,
+  WORD    wLanguage,
+  LPVOID  lpData,
+  DWORD   cbData) {
+
+  FIXME(win32, ": stub\n");
+  SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+  return FALSE;
+}
+
+
+
+
diff --git a/win32/time.c b/win32/time.c
index fc82034..dbcca67 100644
--- a/win32/time.c
+++ b/win32/time.c
@@ -138,3 +138,16 @@
 VOID WINAPI GetSystemTimeAsFileTime(LPFILETIME systemtimeAsfiletime) {
 	DOSFS_UnixTimeToFileTime(time(NULL),systemtimeAsfiletime,0);
 }
+
+/***********************************************************************
+ *              SystemTimeToTzSpecificLocalTime32  (KERNEL32.683)
+ */
+BOOL32 WINAPI SystemTimeToTzSpecificLocalTime32(
+  LPTIME_ZONE_INFORMATION lpTimeZoneInformation,
+  LPSYSTEMTIME lpUniversalTime,
+  LPSYSTEMTIME lpLocalTime) {
+
+  FIXME(win32, ":stub\n"); 
+  SetLastError(ERROR_CALL_NOT_IMPLEMENTED); 
+       return FALSE;
+}
diff --git a/windows/input.c b/windows/input.c
index e38e90e..f82585b 100644
--- a/windows/input.c
+++ b/windows/input.c
@@ -791,6 +791,17 @@
         return layout;
 }
 
+/**********************************************************************
+ *           ActivateKeyboardLayout32      (USER32.1)
+ */
+HKL32 WINAPI ActivateKeyboardLayout32(HKL32 hLayout, UINT32 flags)
+{
+    FIXME(keyboard, "(%d, %d): stub\n", hLayout, flags);
+
+    return 0;
+}
+
+
 /***********************************************************************
  *           GetKeyboardLayoutList		(USER32.251)
  * FIXME
@@ -820,3 +831,36 @@
 	return TRUE;
 }
 
+
+/***********************************************************************
+ *           ToUnicode32                       (USER32.548)
+ */
+INT32 WINAPI ToUnicode32(
+  UINT32 wVirtKey,
+  UINT32 wScanCode,
+  PBYTE  lpKeyState,
+  LPWSTR pwszBuff,
+  int    cchBuff,
+  UINT32 wFlags) {
+
+       FIXME(keyboard,": stub\n");
+       return 0;
+}
+
+/***********************************************************************
+ *           LoadKeyboardLayout32A                (USER32.367)
+ */
+HKL32 WINAPI LoadKeyboardLayout32A(LPCSTR pwszKLID, UINT32 Flags)
+{
+  FIXME(keyboard, "%s, %d): stub\n", pwszKLID, Flags);
+  return 0; 
+}
+
+/***********************************************************************
+ *           LoadKeyboardLayout32W                (USER32.368)
+ */
+HKL32 WINAPI LoadKeyboardLayout32W(LPCWSTR pwszKLID, UINT32 Flags)
+{
+  FIXME(keyboard, "%p, %d): stub\n", pwszKLID, Flags);
+  return 0;
+}
diff --git a/windows/message.c b/windows/message.c
index c7ad72d..db0e657 100644
--- a/windows/message.c
+++ b/windows/message.c
@@ -1981,6 +1981,17 @@
 	}
 	return ret;
 }
+
+/***********************************************************************
+ *           SendNotifyMessage32W    (USER32.461)
+ */
+BOOL32 WINAPI SendNotifyMessage32W(HWND32 hWnd, UINT32 msg, WPARAM32 wParam,
+                                   LPARAM lParam)
+{
+  FIXME(msg, "(%04x,%08x,%08x,%08lx): stub\n", hWnd, msg, wParam, lParam);
+  return 0; 
+}
+
 /***********************************************************************
  *           SendMessageCallBack32A
  * FIXME: It's like PostMessage. The callback gets called when the message
