diff --git a/dlls/commdlg/cdlg32.c b/dlls/commdlg/cdlg32.c
index 689db124ca1e20db1885a4911bfc91dc32a09940..2f45eda44768ed1f2f6fbd310612107380cabffa 100644
--- a/dlls/commdlg/cdlg32.c
+++ b/dlls/commdlg/cdlg32.c
@@ -158,7 +158,7 @@ void COMDLG32_SetCommDlgExtendedError(DWORD err)
         if (COMDLG32_TlsIndex == TLS_OUT_OF_INDEXES)
 	  COMDLG32_TlsIndex = TlsAlloc();
 	if (COMDLG32_TlsIndex != TLS_OUT_OF_INDEXES)
-	  TlsSetValue(COMDLG32_TlsIndex, (void *)err);
+	  TlsSetValue(COMDLG32_TlsIndex, (LPVOID)(DWORD_PTR)err);
 	else
 	  FIXME("No Tls Space\n");
 }
@@ -176,7 +176,7 @@ void COMDLG32_SetCommDlgExtendedError(DWORD err)
 DWORD WINAPI CommDlgExtendedError(void)
 {
         if (COMDLG32_TlsIndex != TLS_OUT_OF_INDEXES)
-	  return (DWORD)TlsGetValue(COMDLG32_TlsIndex);
+	  return (DWORD_PTR)TlsGetValue(COMDLG32_TlsIndex);
 	else
 	  return 0; /* we never set an error, so there isn't one */
 }
diff --git a/dlls/commdlg/colordlg.c b/dlls/commdlg/colordlg.c
index f892cc20dbafbd54ed3b306b02f5c8cb9609ff45..902de60ea4e31c23c37dc594c222b2b933c81a89 100644
--- a/dlls/commdlg/colordlg.c
+++ b/dlls/commdlg/colordlg.c
@@ -1303,7 +1303,7 @@ BOOL WINAPI ChooseColorW( LPCHOOSECOLORW lpChCol )
     }
 
     bRet = DialogBoxIndirectParamW(COMDLG32_hInstance, template, lpChCol->hwndOwner,
-                     ColorDlgProc, (DWORD)lpChCol);
+                     ColorDlgProc, (LPARAM)lpChCol);
     return bRet;
 }
 
diff --git a/dlls/commdlg/filedlg.c b/dlls/commdlg/filedlg.c
index 8b2ac817ac6c6991c2b765611055df3dcc946da9..95b856fcb401ee8e5fd5bddfe9a0163da72628cf 100644
--- a/dlls/commdlg/filedlg.c
+++ b/dlls/commdlg/filedlg.c
@@ -1091,7 +1091,7 @@ INT_PTR CALLBACK FileOpenDlgProc95(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM l
 		    stringId = 0;
 	    }
 	    lpdi->hinst = COMDLG32_hInstance;
-	    lpdi->lpszText =  (LPSTR) stringId;
+	    lpdi->lpszText =  MAKEINTRESOURCEA(stringId);
 	}
         return FALSE;
     }
@@ -2378,7 +2378,7 @@ static HRESULT FILEDLG95_FILETYPE_Init(HWND hwnd)
     lpstrFilter = (LPWSTR) CBGetItemDataPtr(fodInfos->DlgInfos.hwndFileTypeCB,
                                              nFilterIndexCB);
 
-    if ((INT)lpstrFilter == CB_ERR)  /* control is empty */
+    if ((INT_PTR)lpstrFilter == CB_ERR)  /* control is empty */
       lpstrFilter = NULL;
 
     if(lpstrFilter)
@@ -2423,7 +2423,7 @@ static BOOL FILEDLG95_FILETYPE_OnCommand(HWND hwnd, WORD wNotifyCode)
 
       lpstrFilter = (LPWSTR) CBGetItemDataPtr(fodInfos->DlgInfos.hwndFileTypeCB,
                                              iItem);
-      if((int)lpstrFilter != CB_ERR)
+      if((INT_PTR)lpstrFilter != CB_ERR)
       {
           DWORD len;
           CharLowerW(lpstrFilter); /* lowercase */
diff --git a/dlls/commdlg/fontdlg.c b/dlls/commdlg/fontdlg.c
index 407ee3dcf12a3fcb3f6cc29751725a68ff9118bb..96894b570e7c22551202ba7f8eed0ebd43f6411a 100644
--- a/dlls/commdlg/fontdlg.c
+++ b/dlls/commdlg/fontdlg.c
@@ -670,7 +670,7 @@ LRESULT CFn_WMInitDialog(HWND hDlg, WPARAM wParam, LPARAM lParam,
     if (lpcf->Flags & CF_INITTOLOGFONTSTRUCT)
     {
         /* look for fitting font name in combobox1 */
-        j=SendDlgItemMessageW(hDlg,cmb1,CB_FINDSTRING,-1,(LONG)lpxx->lfFaceName);
+        j=SendDlgItemMessageW(hDlg,cmb1,CB_FINDSTRING,-1,(LPARAM)lpxx->lfFaceName);
         if (j!=CB_ERR)
         {
             INT height = lpxx->lfHeight < 0 ? -lpxx->lfHeight :
@@ -699,7 +699,7 @@ LRESULT CFn_WMInitDialog(HWND hDlg, WPARAM wParam, LPARAM lParam,
     }
     if ((lpcf->Flags & CF_USESTYLE) && lpcf->lpszStyle)
     {
-        j=SendDlgItemMessageW(hDlg,cmb2,CB_FINDSTRING,-1,(LONG)lpcf->lpszStyle);
+        j=SendDlgItemMessageW(hDlg,cmb2,CB_FINDSTRING,-1,(LPARAM)lpcf->lpszStyle);
         if (j!=CB_ERR)
         {
             j=SendDlgItemMessageW(hDlg,cmb2,CB_SETCURSEL,j,0);
diff --git a/dlls/commdlg/printdlg.c b/dlls/commdlg/printdlg.c
index c10e62d2e7e3f64bf631e96cc4885ea031636859..7c5dd56fdb906dad4f3a18660b4e6ed8fdf49d6e 100644
--- a/dlls/commdlg/printdlg.c
+++ b/dlls/commdlg/printdlg.c
@@ -3157,7 +3157,7 @@ PRINTDLG_PageDlgProcA(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
                 pda->curdlg.ptPaperSize.x = tmp;
             }
 	} else 
-	    WARN("GlobalLock(pda->pdlg.hDevMode) fail? hDevMode=%ld", (DWORD)pda->pdlg.hDevMode);
+	    WARN("GlobalLock(pda->pdlg.hDevMode) fail? hDevMode=%p", pda->pdlg.hDevMode);
 	/* Drawing paper prev */
 	PRINTDLG_PS_ChangePaperPrev(pda);
 	return TRUE;
diff --git a/dlls/crypt32/encode.c b/dlls/crypt32/encode.c
index 121569f6158728662fccb740d2139e580f106b1b..877ffca1928ec9e1e08f2efeff69a94625f76c11 100644
--- a/dlls/crypt32/encode.c
+++ b/dlls/crypt32/encode.c
@@ -190,7 +190,7 @@ static char *CRYPT_GetKeyName(DWORD dwEncodingType, LPCSTR pszFuncName,
      */
     if (!HIWORD(pszOID))
     {
-        snprintf(numericOID, sizeof(numericOID), "#%d", (int)pszOID);
+        snprintf(numericOID, sizeof(numericOID), "#%d", LOWORD(pszOID));
         oid = numericOID;
     }
     else
diff --git a/dlls/crypt32/protectdata.c b/dlls/crypt32/protectdata.c
index ee9fd665271e5a69055c28fe615260bcedc9ef32..12b5ac399431a7bb4bd56f32f19b1a7e1370e5da 100644
--- a/dlls/crypt32/protectdata.c
+++ b/dlls/crypt32/protectdata.c
@@ -132,7 +132,7 @@ hex_str(unsigned char *p, int n)
 
 #define TRACE_DATA_BLOB(blob) do { \
     TRACE("%s cbData: %u\n", #blob ,(unsigned int)((blob)->cbData)); \
-    TRACE("%s pbData @ 0x%x:%s\n", #blob ,(unsigned int)((blob)->pbData), \
+    TRACE("%s pbData @ %p:%s\n", #blob ,(blob)->pbData, \
           hex_str((blob)->pbData, (blob)->cbData)); \
 } while (0)
 
@@ -778,14 +778,14 @@ static void
 report(DATA_BLOB* pDataIn, DATA_BLOB* pOptionalEntropy,
        CRYPTPROTECT_PROMPTSTRUCT* pPromptStruct, DWORD dwFlags)
 {
-    TRACE("pPromptStruct: 0x%x\n",(unsigned int)pPromptStruct);
+    TRACE("pPromptStruct: %p\n", pPromptStruct);
     if (pPromptStruct)
     {
         TRACE("  cbSize: 0x%x\n",(unsigned int)pPromptStruct->cbSize);
         TRACE("  dwPromptFlags: 0x%x\n",(unsigned int)pPromptStruct->dwPromptFlags);
-        TRACE("  hwndApp: 0x%x\n",(unsigned int)pPromptStruct->hwndApp);
-        TRACE("  szPrompt: 0x%x %s\n",
-              (unsigned int)pPromptStruct->szPrompt,
+        TRACE("  hwndApp: %p\n", pPromptStruct->hwndApp);
+        TRACE("  szPrompt: %p %s\n",
+              pPromptStruct->szPrompt,
               pPromptStruct->szPrompt ? debugstr_w(pPromptStruct->szPrompt)
               : "");
     }
@@ -855,7 +855,7 @@ BOOL WINAPI CryptProtectData(DATA_BLOB* pDataIn,
 
     /* debug: show our arguments */
     report(pDataIn,pOptionalEntropy,pPromptStruct,dwFlags);
-    TRACE("\tszDataDescr: 0x%x %s\n",(unsigned int)szDataDescr,
+    TRACE("\tszDataDescr: %p %s\n", szDataDescr,
           szDataDescr ? debugstr_w(szDataDescr) : "");
 
     /* Windows appears to create an empty szDataDescr instead of maintaining
@@ -1026,7 +1026,7 @@ BOOL WINAPI CryptUnprotectData(DATA_BLOB* pDataIn,
 
     /* debug: show our arguments */
     report(pDataIn,pOptionalEntropy,pPromptStruct,dwFlags);
-    TRACE("\tppszDataDescr: 0x%x\n",(unsigned int)ppszDataDescr);
+    TRACE("\tppszDataDescr: %p\n", ppszDataDescr);
 
     /* take apart the opaque blob */
     if (!unserialize(pDataIn, &protect_data))
diff --git a/dlls/shell32/brsfolder.c b/dlls/shell32/brsfolder.c
index 9d5b955972fe24260e079a3fc4bf8d6148d5feed..b4fdc48a3185963cb400a45e2c906a63f05abfca 100644
--- a/dlls/shell32/brsfolder.c
+++ b/dlls/shell32/brsfolder.c
@@ -316,7 +316,7 @@ static void FillTreeView( browse_info *info, IShellFolder * lpsf,
 	HRESULT		hr;
 	HWND		hwnd = GetParent( info->hwndTreeView );
 
-	TRACE("%p %p %x %p\n",lpsf, pidl, (INT)hParent, lpe);
+	TRACE("%p %p %p %p\n",lpsf, pidl, hParent, lpe);
 
 	/* No IEnumIDList -> No children */
 	if (!lpe) return;
diff --git a/dlls/shell32/control.c b/dlls/shell32/control.c
index 3f7a9404ad0df8015e1a17fe1ca3fcd831314874..1335ac66d39e4cbedb1709b3aaef7e374f066650 100644
--- a/dlls/shell32/control.c
+++ b/dlls/shell32/control.c
@@ -153,7 +153,7 @@ static void 	 Control_WndProc_Create(HWND hWnd, const CREATESTRUCTA* cs)
 {
    CPanel*	panel = (CPanel*)cs->lpCreateParams;
 
-   SetWindowLongA(hWnd, 0, (LPARAM)panel);
+   SetWindowLongPtrA(hWnd, 0, (LONG_PTR)panel);
    panel->status = 0;
    panel->hWnd = hWnd;
 }
@@ -244,7 +244,7 @@ static LRESULT Control_WndProc_LButton(CPanel* panel, LPARAM lParam, BOOL up)
 static LRESULT WINAPI	Control_WndProc(HWND hWnd, UINT wMsg,
 					WPARAM lParam1, LPARAM lParam2)
 {
-   CPanel*	panel = (CPanel*)GetWindowLongA(hWnd, 0);
+   CPanel*	panel = (CPanel*)GetWindowLongPtrA(hWnd, 0);
 
    if (panel || wMsg == WM_CREATE) {
       switch (wMsg) {
diff --git a/dlls/shell32/dde.c b/dlls/shell32/dde.c
index 270ebaf921a542f9bc39ea99e7160c96f90003f4..21ddfccb7a15b397f4eb9687fe3332681e3ef867 100644
--- a/dlls/shell32/dde.c
+++ b/dlls/shell32/dde.c
@@ -104,16 +104,16 @@ static HDDEDATA CALLBACK DdeCallback(
     switch (uType)
     {
     case XTYP_CONNECT:
-        return (HDDEDATA)Dde_OnConnect(hsz1, hsz2);
+        return (HDDEDATA)(DWORD_PTR)Dde_OnConnect(hsz1, hsz2);
     case XTYP_CONNECT_CONFIRM:
         Dde_OnConnectConfirm(hconv, hsz1, hsz2);
         return NULL;
     case XTYP_WILDCONNECT:
-        return (HDDEDATA)Dde_OnWildConnect(hsz1, hsz2);
+        return (HDDEDATA)(DWORD_PTR)Dde_OnWildConnect(hsz1, hsz2);
     case XTYP_REQUEST:
         return (HDDEDATA)Dde_OnRequest(uFmt, hconv, hsz1, hsz2);
     case XTYP_EXECUTE:
-        return (HDDEDATA)Dde_OnExecute(hconv, hsz1, hdata);
+        return (HDDEDATA)(DWORD_PTR)Dde_OnExecute(hconv, hsz1, hdata);
     case XTYP_DISCONNECT:
         Dde_OnDisconnect(hconv);
         return NULL;
diff --git a/dlls/shell32/shell32_main.c b/dlls/shell32/shell32_main.c
index 80fd4238f595e96fe958177e35a5d3a38691f65f..6dbc714a23833680fc810fbf201c2d535643764a 100644
--- a/dlls/shell32/shell32_main.c
+++ b/dlls/shell32/shell32_main.c
@@ -308,12 +308,13 @@ static DWORD shgfi_get_exe_type(LPCWSTR szFullPath)
  * SHGetFileInfoW            [SHELL32.@]
  *
  */
-DWORD WINAPI SHGetFileInfoW(LPCWSTR path,DWORD dwFileAttributes,
-                            SHFILEINFOW *psfi, UINT sizeofpsfi, UINT flags )
+DWORD_PTR WINAPI SHGetFileInfoW(LPCWSTR path,DWORD dwFileAttributes,
+                                SHFILEINFOW *psfi, UINT sizeofpsfi, UINT flags )
 {
     WCHAR szLocation[MAX_PATH], szFullPath[MAX_PATH];
     int iIndex;
-    DWORD ret = TRUE, dwAttributes = 0;
+    DWORD_PTR ret = TRUE;
+    DWORD dwAttributes = 0;
     IShellFolder * psfParent = NULL;
     IExtractIconW * pei = NULL;
     LPITEMIDLIST    pidlLast = NULL, pidl = NULL;
@@ -557,9 +558,9 @@ DWORD WINAPI SHGetFileInfoW(LPCWSTR path,DWORD dwFileAttributes,
         if (ret)
         {
             if (flags & SHGFI_SMALLICON)
-                ret = (DWORD) ShellSmallIconList;
+                ret = (DWORD_PTR) ShellSmallIconList;
             else
-                ret = (DWORD) ShellBigIconList;
+                ret = (DWORD_PTR) ShellBigIconList;
         }
     }
 
@@ -596,9 +597,9 @@ DWORD WINAPI SHGetFileInfoW(LPCWSTR path,DWORD dwFileAttributes,
 /*************************************************************************
  * SHGetFileInfoA            [SHELL32.@]
  */
-DWORD WINAPI SHGetFileInfoA(LPCSTR path,DWORD dwFileAttributes,
-                              SHFILEINFOA *psfi, UINT sizeofpsfi,
-                              UINT flags )
+DWORD_PTR WINAPI SHGetFileInfoA(LPCSTR path,DWORD dwFileAttributes,
+                                SHFILEINFOA *psfi, UINT sizeofpsfi,
+                                UINT flags )
 {
     INT len;
     LPWSTR temppath;
@@ -706,7 +707,7 @@ HICON WINAPI ExtractIconW(HINSTANCE hInstance, LPCWSTR lpszFile, UINT nIconIndex
     {
         ret = PrivateExtractIconsW(lpszFile, 0, cx, cy, NULL, NULL, 0, LR_DEFAULTCOLOR);
         if (ret != 0xFFFFFFFF && ret)
-            return (HICON)ret;
+            return (HICON)(UINT_PTR)ret;
         return NULL;
     }
     else
diff --git a/dlls/shell32/shell32_main.h b/dlls/shell32/shell32_main.h
index 1dc8d5c1c5c92ac9fbe59f5a17c2aec213c4d1b4..b33431163cf251380a68a507de80f14b04b7e248 100644
--- a/dlls/shell32/shell32_main.h
+++ b/dlls/shell32/shell32_main.h
@@ -214,7 +214,7 @@ inline static WCHAR * __SHCloneStrAtoW(WCHAR ** target, const char * source)
 #define HINSTANCE_32(h16)	((HINSTANCE)(ULONG_PTR)(h16))
 #define HINSTANCE_16(h32)	(LOWORD(h32))
 
-typedef UINT (*SHELL_ExecuteW32)(const WCHAR *lpCmd, WCHAR *env, BOOL shWait,
+typedef UINT_PTR (*SHELL_ExecuteW32)(const WCHAR *lpCmd, WCHAR *env, BOOL shWait,
 			    LPSHELLEXECUTEINFOW sei, LPSHELLEXECUTEINFOW sei_out);
 
 BOOL WINAPI ShellExecuteExW32(LPSHELLEXECUTEINFOW sei, SHELL_ExecuteW32 execfunc);
diff --git a/dlls/shell32/shelllink.c b/dlls/shell32/shelllink.c
index 8d57805677144cd870e53464aa3508c766aa80a6..41467827c216bd95cfd01d96831426bbf323b674 100644
--- a/dlls/shell32/shelllink.c
+++ b/dlls/shell32/shelllink.c
@@ -2384,7 +2384,7 @@ ShellLink_InvokeCommand( IContextMenu* iface, LPCMINVOKECOMMANDINFO lpici )
 }
 
 static HRESULT WINAPI
-ShellLink_GetCommandString( IContextMenu* iface, UINT idCmd, UINT uType,
+ShellLink_GetCommandString( IContextMenu* iface, UINT_PTR idCmd, UINT uType,
                             UINT* pwReserved, LPSTR pszName, UINT cchMax )
 {
     IShellLinkImpl *This = impl_from_IContextMenu(iface);
diff --git a/dlls/shell32/shellord.c b/dlls/shell32/shellord.c
index a8e36b4f9f809917eb52e359dd31369f0b3baafa..2fb50fa26ef90c054e3604de5e4a91828ed762b0 100644
--- a/dlls/shell32/shellord.c
+++ b/dlls/shell32/shellord.c
@@ -355,16 +355,16 @@ int WINAPIV ShellMessageBoxW(
 	va_start(args, uType);
 	/* wvsprintfA(buf,fmt, args); */
 
-	TRACE("(%08lx,%08lx,%p,%p,%08x)\n",
-	(DWORD)hInstance,(DWORD)hWnd,lpText,lpCaption,uType);
+	TRACE("(%p,%p,%p,%p,%08x)\n",
+	    hInstance,hWnd,lpText,lpCaption,uType);
 
-	if (!HIWORD(lpCaption))
-	  LoadStringW(hInstance, (DWORD)lpCaption, szTitle, sizeof(szTitle)/sizeof(szTitle[0]));
+	if (IS_INTRESOURCE(lpCaption))
+	  LoadStringW(hInstance, LOWORD(lpCaption), szTitle, sizeof(szTitle)/sizeof(szTitle[0]));
 	else
 	  pszTitle = lpCaption;
 
-	if (!HIWORD(lpText))
-	  LoadStringW(hInstance, (DWORD)lpText, szText, sizeof(szText)/sizeof(szText[0]));
+	if (IS_INTRESOURCE(lpText))
+	  LoadStringW(hInstance, LOWORD(lpText), szText, sizeof(szText)/sizeof(szText[0]));
 	else
 	  pszText = lpText;
 
@@ -412,16 +412,16 @@ int WINAPIV ShellMessageBoxA(
 	va_start(args, uType);
 	/* wvsprintfA(buf,fmt, args); */
 
-	TRACE("(%08lx,%08lx,%p,%p,%08x)\n",
-	(DWORD)hInstance,(DWORD)hWnd,lpText,lpCaption,uType);
+	TRACE("(%p,%p,%p,%p,%08x)\n",
+	    hInstance,hWnd,lpText,lpCaption,uType);
 
-	if (!HIWORD(lpCaption))
-	  LoadStringA(hInstance, (DWORD)lpCaption, szTitle, sizeof(szTitle));
+	if (IS_INTRESOURCE(lpCaption))
+	  LoadStringA(hInstance, LOWORD(lpCaption), szTitle, sizeof(szTitle));
 	else
 	  pszTitle = lpCaption;
 
-	if (!HIWORD(lpText))
-	  LoadStringA(hInstance, (DWORD)lpText, szText, sizeof(szText));
+	if (IS_INTRESOURCE(lpText))
+	  LoadStringA(hInstance, LOWORD(lpText), szText, sizeof(szText));
 	else
 	  pszText = lpText;
 
@@ -1004,10 +1004,9 @@ static LPUNKNOWN SHELL32_IExplorerInterface=0;
  * NOTES
  *  Sets the interface
  */
-HRESULT WINAPI SHSetInstanceExplorer (LPUNKNOWN lpUnknown)
+VOID WINAPI SHSetInstanceExplorer (LPUNKNOWN lpUnknown)
 {	TRACE("%p\n", lpUnknown);
 	SHELL32_IExplorerInterface = lpUnknown;
-	return (HRESULT) lpUnknown;
 }
 /*************************************************************************
  * SHGetInstanceExplorer			[SHELL32.@]
diff --git a/dlls/shell32/shellpath.c b/dlls/shell32/shellpath.c
index e81347fe9a22ac55d6f4b04847657368d0163d5c..4e3569d08c30813085ce605ecb87bcc331f10052 100644
--- a/dlls/shell32/shellpath.c
+++ b/dlls/shell32/shellpath.c
@@ -1303,7 +1303,7 @@ static HRESULT _SHGetDefaultValue(BYTE folder, LPWSTR pszPath)
      IS_INTRESOURCE(CSIDL_Data[folder].szDefaultPath))
     {
         if (LoadStringW(shell32_hInstance,
-         (UINT)CSIDL_Data[folder].szDefaultPath, resourcePath, MAX_PATH))
+         LOWORD(CSIDL_Data[folder].szDefaultPath), resourcePath, MAX_PATH))
         {
             hr = S_OK;
             pDefaultPath = resourcePath;
diff --git a/dlls/shell32/shlexec.c b/dlls/shell32/shlexec.c
index 4159e268711414d688011f519e7121a69f0e4f3d..00a32aa656339fead47af969f81a97e3687f4963 100644
--- a/dlls/shell32/shlexec.c
+++ b/dlls/shell32/shlexec.c
@@ -334,12 +334,12 @@ static HRESULT SHELL_ResolveShortCutW(LPWSTR wcmd, LPWSTR wargs, LPWSTR wdir, HW
  *	SHELL_ExecuteW [Internal]
  *
  */
-static UINT SHELL_ExecuteW(const WCHAR *lpCmd, WCHAR *env, BOOL shWait,
+static UINT_PTR SHELL_ExecuteW(const WCHAR *lpCmd, WCHAR *env, BOOL shWait,
 			    LPSHELLEXECUTEINFOW psei, LPSHELLEXECUTEINFOW psei_out)
 {
     STARTUPINFOW  startup;
     PROCESS_INFORMATION info;
-    UINT retval = 31;
+    UINT_PTR retval = 31;
     UINT gcdret = 0;
     WCHAR curdir[MAX_PATH];
 
@@ -864,13 +864,13 @@ static unsigned dde_connect(WCHAR* key, WCHAR* start, WCHAR* ddeexec,
 /*************************************************************************
  *	execute_from_key [Internal]
  */
-static UINT execute_from_key(LPWSTR key, LPCWSTR lpFile, WCHAR *env, LPCWSTR szCommandline,
+static UINT_PTR execute_from_key(LPWSTR key, LPCWSTR lpFile, WCHAR *env, LPCWSTR szCommandline,
 			     SHELL_ExecuteW32 execfunc,
 			     LPSHELLEXECUTEINFOW psei, LPSHELLEXECUTEINFOW psei_out)
 {
     WCHAR cmd[1024];
     LONG cmdlen = sizeof(cmd);
-    UINT retval = 31;
+    UINT_PTR retval = 31;
 
     cmd[0] = '\0';
 
@@ -928,7 +928,7 @@ HINSTANCE WINAPI FindExecutableA(LPCSTR lpFile, LPCSTR lpDirectory, LPSTR lpResu
     if (wDirectory) SHFree( wDirectory );
 
     TRACE("returning %s\n", lpResult);
-    return (HINSTANCE)retval;
+    return retval;
 }
 
 /*************************************************************************
@@ -936,7 +936,7 @@ HINSTANCE WINAPI FindExecutableA(LPCSTR lpFile, LPCSTR lpDirectory, LPSTR lpResu
  */
 HINSTANCE WINAPI FindExecutableW(LPCWSTR lpFile, LPCWSTR lpDirectory, LPWSTR lpResult)
 {
-    UINT retval = 31;    /* default - 'No association was found' */
+    UINT_PTR retval = 31;    /* default - 'No association was found' */
     WCHAR old_dir[1024];
 
     TRACE("File %s, Dir %s\n",
@@ -989,7 +989,7 @@ BOOL WINAPI ShellExecuteExW32 (LPSHELLEXECUTEINFOW sei, SHELL_ExecuteW32 execfun
     WCHAR *env;
     WCHAR lpstrProtocol[256];
     LPCWSTR lpFile;
-    UINT retval = 31;
+    UINT_PTR retval = 31;
     WCHAR wcmd[1024];
     WCHAR buffer[MAX_PATH];
     const WCHAR* ext;
@@ -1337,7 +1337,7 @@ BOOL WINAPI ShellExecuteExW32 (LPSHELLEXECUTEINFOW sei, SHELL_ExecuteW32 execfun
         WCHAR lpstrTmpFile[256];
         strcpyW(lpstrTmpFile, wHttp);
         strcatW(lpstrTmpFile, lpFile);
-        retval = (UINT)ShellExecuteW(sei_tmp.hwnd, sei_tmp.lpVerb, lpstrTmpFile, NULL, NULL, 0);
+        retval = (UINT_PTR)ShellExecuteW(sei_tmp.hwnd, sei_tmp.lpVerb, lpstrTmpFile, NULL, NULL, 0);
     }
 
     TRACE("retval %u\n", retval);
diff --git a/dlls/shell32/shlmenu.c b/dlls/shell32/shlmenu.c
index 527d8a21349e2271de7111fa4922aad738251050..99810dc45a845add995536d968d34cd5a49e6f10 100644
--- a/dlls/shell32/shlmenu.c
+++ b/dlls/shell32/shlmenu.c
@@ -206,7 +206,7 @@ static int FM_InitMenuPopup(HMENU hmenu, LPCITEMIDLIST pAlternatePidl)
 
 		    MenuInfo.cbSize = sizeof(MENUINFO);
 		    MenuInfo.fMask = MIM_MENUDATA;
-		    MenuInfo.dwMenuData = (DWORD) lpFmMi;
+		    MenuInfo.dwMenuData = (ULONG_PTR) lpFmMi;
 		    SetMenuInfo (hMenuPopup, &MenuInfo);
 
 		    FileMenu_AppendItemW (hmenu, sTemp, uID, iIcon, hMenuPopup, FM_DEFAULT_HEIGHT);
@@ -277,7 +277,7 @@ HMENU WINAPI FileMenu_Create (
 
 	MenuInfo.cbSize = sizeof(MENUINFO);
 	MenuInfo.fMask = MIM_MENUDATA;
-	MenuInfo.dwMenuData = (DWORD) menudata;
+	MenuInfo.dwMenuData = (ULONG_PTR) menudata;
 	SetMenuInfo (hMenu, &MenuInfo);
 
 	return hMenu;
@@ -342,7 +342,7 @@ static BOOL FileMenu_AppendItemW(
 	  myItem->iIconIndex = icon;
 	  myItem->hMenu = hMenu;
 	  mii.fMask = MIIM_DATA;
-	  mii.dwItemData = (DWORD) myItem;
+	  mii.dwItemData = (ULONG_PTR) myItem;
 	}
 
 	if ( hMenuPopup )
diff --git a/dlls/shell32/shv_bg_cmenu.c b/dlls/shell32/shv_bg_cmenu.c
index 00518f6f4600df2379b5b25097420b5d51817666..669d080156ec49125d30038c921598ebf2e95cf1 100644
--- a/dlls/shell32/shv_bg_cmenu.c
+++ b/dlls/shell32/shv_bg_cmenu.c
@@ -400,7 +400,7 @@ static HRESULT WINAPI ISVBgCm_fnInvokeCommand(
  */
 static HRESULT WINAPI ISVBgCm_fnGetCommandString(
 	IContextMenu2 *iface,
-	UINT idCommand,
+	UINT_PTR idCommand,
 	UINT uFlags,
 	UINT* lpReserved,
 	LPSTR lpszName,
diff --git a/dlls/shell32/shv_item_cmenu.c b/dlls/shell32/shv_item_cmenu.c
index 985150d49d6323a366c0ab795adc24493666967d..60e94f4786692782b10fbfb0779806ea3b77a2f4 100644
--- a/dlls/shell32/shv_item_cmenu.c
+++ b/dlls/shell32/shv_item_cmenu.c
@@ -452,7 +452,7 @@ static HRESULT WINAPI ISvItemCm_fnInvokeCommand(
 */
 static HRESULT WINAPI ISvItemCm_fnGetCommandString(
 	IContextMenu2 *iface,
-	UINT idCommand,
+	UINT_PTR idCommand,
 	UINT uFlags,
 	UINT* lpReserved,
 	LPSTR lpszName,
diff --git a/include/commctrl.h b/include/commctrl.h
index 051382329ee2d5d8939e781470b7536c6746f385..fc756ee5bd2e17515b7f827cd83618844e85373d 100644
--- a/include/commctrl.h
+++ b/include/commctrl.h
@@ -2658,7 +2658,7 @@ typedef struct tagTVKEYDOWN
 
 #define TreeView_SetImageList(hwnd, himl, iImage) \
     (HIMAGELIST)SNDMSGA((hwnd), TVM_SETIMAGELIST, iImage, \
- (LPARAM)(UINT)(HIMAGELIST)(himl))
+ (LPARAM)(HIMAGELIST)(himl))
 
 #define TreeView_GetNextItem(hwnd, hitem, code) \
     (HTREEITEM)SNDMSGA((hwnd), TVM_GETNEXTITEM, (WPARAM)code,\
@@ -2691,8 +2691,8 @@ typedef struct tagTVKEYDOWN
 
 
 #define TreeView_Select(hwnd, hitem, code) \
- (UINT)SNDMSGA((hwnd), TVM_SELECTITEM, (WPARAM)code, \
-(LPARAM)(UINT)(hitem))
+ (BOOL)SNDMSGA((hwnd), TVM_SELECTITEM, (WPARAM)(code), \
+(LPARAM)(HTREEITEM)(hitem))
 
 
 #define TreeView_SelectItem(hwnd, hitem) \
@@ -3663,7 +3663,7 @@ typedef struct NMLVSCROLL
 #define ListView_SetBkColor(hwnd,clrBk) \
     (BOOL)SNDMSGA((hwnd),LVM_SETBKCOLOR,0,(LPARAM)(COLORREF)(clrBk))
 #define ListView_SetImageList(hwnd,himl,iImageList) \
-    (HIMAGELIST)(UINT)SNDMSGA((hwnd),LVM_SETIMAGELIST,(WPARAM)(iImageList),(LPARAM)(UINT)(HIMAGELIST)(himl))
+    (HIMAGELIST)SNDMSGA((hwnd),LVM_SETIMAGELIST,(WPARAM)(iImageList),(LPARAM)(HIMAGELIST)(himl))
 #define ListView_GetItemCount(hwnd) \
     (INT)SNDMSGA((hwnd),LVM_GETITEMCOUNT,0,0L)
 #define ListView_RedrawItems(hwnd,first,last) \
diff --git a/include/shellapi.h b/include/shellapi.h
index 3c93737bacaaa1dc87e274bc44bcfb29106ac5dd..950eab9bbac338b8f92db8acac317eb3ab4618c8 100644
--- a/include/shellapi.h
+++ b/include/shellapi.h
@@ -146,8 +146,8 @@ typedef struct tagSHFILEINFOW
 
 DECL_WINELIB_TYPE_AW(SHFILEINFO)
 
-DWORD	WINAPI SHGetFileInfoA(LPCSTR,DWORD,SHFILEINFOA*,UINT,UINT);
-DWORD	WINAPI SHGetFileInfoW(LPCWSTR,DWORD,SHFILEINFOW*,UINT,UINT);
+DWORD_PTR	WINAPI SHGetFileInfoA(LPCSTR,DWORD,SHFILEINFOA*,UINT,UINT);
+DWORD_PTR	WINAPI SHGetFileInfoW(LPCWSTR,DWORD,SHFILEINFOW*,UINT,UINT);
 #define  SHGetFileInfo WINELIB_NAME_AW(SHGetFileInfo)
 
 /******************************************
diff --git a/include/shobjidl.idl b/include/shobjidl.idl
index c460d86fb56cc686da17e718f880eea0ac647092..ce98620605ca74b492fe30d301aa664d2028c00a 100644
--- a/include/shobjidl.idl
+++ b/include/shobjidl.idl
@@ -1033,7 +1033,7 @@ cpp_quote("#define CMIC_MASK_NOZONECHECKS   SEE_MASK_NOZONECHECKS")
     HRESULT InvokeCommand( [in] LPCMINVOKECOMMANDINFO lpici );
 
     HRESULT GetCommandString(
-        [in] UINT idCmd,
+        [in] UINT_PTR idCmd,
         [in] UINT uType,
         [out] UINT *pwReserved,
         [out, size_is(cchMax)] LPSTR pszName,