Louis Lenders : user32: Fix error return values in DialogBoxParam + simple test.

Alexandre Julliard julliard at wine.codeweavers.com
Thu Feb 15 05:27:55 CST 2007


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

Author: Louis Lenders <xerox_xerox2000 at yahoo.co.uk>
Date:   Wed Feb 14 20:32:35 2007 +0000

user32: Fix error return values in DialogBoxParam + simple test.

---

 dlls/user32/dialog.c          |   12 ++++++------
 dlls/user32/tests/dialog.c    |   15 +++++++++++++++
 dlls/user32/tests/resource.rc |    9 +++++++++
 3 files changed, 30 insertions(+), 6 deletions(-)

diff --git a/dlls/user32/dialog.c b/dlls/user32/dialog.c
index e70b33f..3acd37a 100644
--- a/dlls/user32/dialog.c
+++ b/dlls/user32/dialog.c
@@ -800,11 +800,11 @@ INT_PTR WINAPI DialogBoxParamA( HINSTANCE hInst, LPCSTR name,
     HRSRC hrsrc;
     LPCDLGTEMPLATEA ptr;
 
-    if (!(hrsrc = FindResourceA( hInst, name, (LPSTR)RT_DIALOG ))) return 0;
-    if (!(ptr = (LPCDLGTEMPLATEA)LoadResource(hInst, hrsrc))) return 0;
+    if (!(hrsrc = FindResourceA( hInst, name, (LPSTR)RT_DIALOG ))) return -1;
+    if (!(ptr = (LPCDLGTEMPLATEA)LoadResource(hInst, hrsrc))) return -1;
     hwnd = DIALOG_CreateIndirect( hInst, ptr, owner, dlgProc, param, FALSE, TRUE );
     if (hwnd) return DIALOG_DoDialogBox( hwnd, owner );
-    return -1;
+    return 0;
 }
 
 
@@ -818,11 +818,11 @@ INT_PTR WINAPI DialogBoxParamW( HINSTANCE hInst, LPCWSTR name,
     HRSRC hrsrc;
     LPCDLGTEMPLATEW ptr;
 
-    if (!(hrsrc = FindResourceW( hInst, name, (LPWSTR)RT_DIALOG ))) return 0;
-    if (!(ptr = (LPCDLGTEMPLATEW)LoadResource(hInst, hrsrc))) return 0;
+    if (!(hrsrc = FindResourceW( hInst, name, (LPWSTR)RT_DIALOG ))) return -1;
+    if (!(ptr = (LPCDLGTEMPLATEW)LoadResource(hInst, hrsrc))) return -1;
     hwnd = DIALOG_CreateIndirect( hInst, ptr, owner, dlgProc, param, TRUE, TRUE );
     if (hwnd) return DIALOG_DoDialogBox( hwnd, owner );
-    return -1;
+    return 0;
 }
 
 
diff --git a/dlls/user32/tests/dialog.c b/dlls/user32/tests/dialog.c
index eeea474..fe8a0fd 100644
--- a/dlls/user32/tests/dialog.c
+++ b/dlls/user32/tests/dialog.c
@@ -861,6 +861,20 @@ static void test_GetDlgItemText(void)
     ok(string[0] == '\0', "string retrieved using GetDlgItemText should have been NULL terminated\n");
 }
 
+static void test_DialogBoxParamA(void)
+{
+    int ret;
+    HWND hwnd_invalid = (HWND)0x4444;
+
+    SetLastError(0xdeadbeef);
+    ret = DialogBoxParamA(GetModuleHandle(NULL), "IDD_DIALOG" , hwnd_invalid, 0 , 0);
+    ok(0 == ret, "DialogBoxParamA returned %d, expected 0\n", ret);
+    ok(ERROR_INVALID_WINDOW_HANDLE == GetLastError(),"got %d, expected ERROR_INVALID_WINDOW_HANDLE\n",GetLastError());
+    SetLastError(0xdeadbeef);
+    ret = DialogBoxParamA(GetModuleHandle(NULL), "RESOURCE_INVALID" , 0, 0, 0);
+    ok(-1 == ret, "DialogBoxParamA returned %d, expected -1\n", ret);
+    ok(ERROR_RESOURCE_NAME_NOT_FOUND == GetLastError(),"got %d, expected ERROR_RESOURCE_NAME_NOT_FOUND\n",GetLastError());
+}
 
 START_TEST(dialog)
 {
@@ -873,4 +887,5 @@ START_TEST(dialog)
     WM_NEXTDLGCTLTest();
     InitialFocusTest();
     test_GetDlgItemText();
+    test_DialogBoxParamA();
 }
diff --git a/dlls/user32/tests/resource.rc b/dlls/user32/tests/resource.rc
index e882728..8434f61 100644
--- a/dlls/user32/tests/resource.rc
+++ b/dlls/user32/tests/resource.rc
@@ -80,6 +80,15 @@ FONT 8, "MS Shell Dlg"
   EDITTEXT                200,4,4,50,14
 }
 
+IDD_DIALOG DIALOG DISCARDABLE  0, 0, 186, 95
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Dialog"
+FONT 8, "MS Sans Serif"
+BEGIN
+    DEFPUSHBUTTON   "OK",IDOK,129,7,50,14
+    PUSHBUTTON      "Cancel",IDCANCEL,129,24,50,14
+END
+
 /* BINRES test_mono.bmp */
 100 BITMAP test_mono.bmp
 /* {




More information about the wine-cvs mailing list