Mikołaj Zalewski : shell32: RunFileDlg: make the error messages easier to understand for the user.

Alexandre Julliard julliard at winehq.org
Mon Jun 30 08:27:06 CDT 2008


Module: wine
Branch: master
Commit: adc72977f7fa76eabee0e33dac91d38ef454bfda
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=adc72977f7fa76eabee0e33dac91d38ef454bfda

Author: Mikołaj Zalewski <mikolaj at zalewski.pl>
Date:   Fri Jun 27 17:55:48 2008 +0200

shell32: RunFileDlg: make the error messages easier to understand for the user.

---

 dlls/shell32/dialogs.c |   32 +++++++++++++-------------------
 1 files changed, 13 insertions(+), 19 deletions(-)

diff --git a/dlls/shell32/dialogs.c b/dlls/shell32/dialogs.c
index 4359289..367a40a 100644
--- a/dlls/shell32/dialogs.c
+++ b/dlls/shell32/dialogs.c
@@ -100,16 +100,13 @@ void WINAPI RunFileDlgW(
     rfdp.lpstrDescription = lpstrDescription;
     rfdp.uFlags           = uFlags;
 
-    if(!(hRes = FindResourceW(shell32_hInstance, resnameW, (LPWSTR)RT_DIALOG)))
-        {
-        MessageBoxA (hwndOwner, "Couldn't find dialog.", "Nix", MB_OK) ;
-        return;
-        }
-    if(!(template = LoadResource(shell32_hInstance, hRes)))
-        {
-        MessageBoxA (hwndOwner, "Couldn't load dialog.", "Nix", MB_OK) ;
+    if (!(hRes = FindResourceW(shell32_hInstance, resnameW, (LPWSTR)RT_DIALOG)) ||
+        !(template = LoadResource(shell32_hInstance, hRes)))
+    {
+        ERR("Couldn't load SHELL_RUN_DLG resource\n");
+        MessageBoxA(hwndOwner, "Unable to display Run File dialog box (internal error)", NULL, MB_OK | MB_ICONERROR);
         return;
-        }
+    }
 
     DialogBoxIndirectParamW(shell32_hInstance,
 			    template, hwndOwner, RunDlgProc, (LPARAM)&rfdp);
@@ -184,6 +181,7 @@ static INT_PTR CALLBACK RunDlgProc (HWND hwnd, UINT message, WPARAM wParam, LPAR
                     {
                     HMODULE hComdlg = NULL ;
                     LPFNOFN ofnProc = NULL ;
+                    static const WCHAR comdlg32W[] = {'c','o','m','d','l','g','3','2',0};
                     WCHAR szFName[1024] = {0};
                     WCHAR szFilter[MAX_PATH], szCaption[MAX_PATH];
                     static const char ansiFilter[] = "Executable Files\0*.exe\0All Files\0*.*\0\0\0\0";
@@ -200,17 +198,13 @@ static INT_PTR CALLBACK RunDlgProc (HWND hwnd, UINT message, WPARAM wParam, LPAR
                     ofn.lpstrTitle = szCaption;
                     ofn.Flags = OFN_ENABLESIZING | OFN_FILEMUSTEXIST | OFN_HIDEREADONLY | OFN_PATHMUSTEXIST;
 
-                    if (NULL == (hComdlg = LoadLibraryExA ("comdlg32", NULL, 0)))
-                        {
-                        MessageBoxA (hwnd, "Unable to display dialog box (LoadLibraryEx) !", "Nix", MB_OK | MB_ICONEXCLAMATION) ;
-                        return TRUE ;
-                        }
-
-                    if (NULL == (ofnProc = (LPFNOFN)GetProcAddress (hComdlg, "GetOpenFileNameW")))
-                        {
-                        MessageBoxA (hwnd, "Unable to display dialog box (GetProcAddress) !", "Nix", MB_OK | MB_ICONEXCLAMATION) ;
+                    if (NULL == (hComdlg = LoadLibraryExW (comdlg32W, NULL, 0)) ||
+                        NULL == (ofnProc = (LPFNOFN)GetProcAddress (hComdlg, "GetOpenFileNameW")))
+                    {
+                        ERR("Couldn't get GetOpenFileName function entry (lib=%p, proc=%p)\n", hComdlg, ofnProc);
+                        MessageBoxA(hwnd, "Unable to display Browse dialog box (internal error)", NULL, MB_OK | MB_ICONERROR);
                         return TRUE ;
-                        }
+                    }
 
                     if (ofnProc(&ofn))
                     {




More information about the wine-cvs mailing list