From 797ec7a58eef5de5cffff981f60132827c44af2a Mon Sep 17 00:00:00 2001 From: Andrew Nguyen Date: Fri, 7 Aug 2009 04:05:50 -0500 Subject: [PATCH] user32/tests: Test the behavior of DialogBoxParamA with dialog procedure window destruction. --- dlls/user32/tests/dialog.c | 42 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) diff --git a/dlls/user32/tests/dialog.c b/dlls/user32/tests/dialog.c index 060625c2162..35a1c94264e 100644 --- a/dlls/user32/tests/dialog.c +++ b/dlls/user32/tests/dialog.c @@ -901,6 +901,35 @@ static void test_GetDlgItemText(void) "string retrieved using GetDlgItemText should have been NULL terminated\n"); } +static INT_PTR CALLBACK DestroyDlgWinProc (HWND hDlg, UINT uiMsg, + WPARAM wParam, LPARAM lParam) +{ + if (uiMsg == WM_INITDIALOG) + { + DestroyWindow(hDlg); + return TRUE; + } + return FALSE; +} + +static INT_PTR CALLBACK DestroyOnCloseDlgWinProc (HWND hDlg, UINT uiMsg, + WPARAM wParam, LPARAM lParam) +{ + switch (uiMsg) + { + case WM_INITDIALOG: + PostMessage(hDlg, WM_CLOSE, 0, 0); + return TRUE; + case WM_CLOSE: + DestroyWindow(hDlg); + return TRUE; + case WM_DESTROY: + PostQuitMessage(0); + return TRUE; + } + return FALSE; +} + static void test_DialogBoxParamA(void) { int ret; @@ -912,6 +941,19 @@ static void test_DialogBoxParamA(void) ok(ERROR_INVALID_WINDOW_HANDLE == GetLastError() || broken(GetLastError() == 0xdeadbeef), "got %d, expected ERROR_INVALID_WINDOW_HANDLE\n",GetLastError()); + + /* Test a dialog which destroys itself on WM_INITDIALOG. */ + SetLastError(0xdeadbeef); + ret = DialogBoxParamA(GetModuleHandle(NULL), "IDD_DIALOG", 0, DestroyDlgWinProc, 0); + ok(-1 == ret, "DialogBoxParamA returned %d, expected -1\n", ret); + ok(ERROR_INVALID_WINDOW_HANDLE == GetLastError() || + broken(GetLastError() == 0xdeadbeef), + "got %d, expected ERROR_INVALID_WINDOW_HANDLE\n",GetLastError()); + + /* Test a dialog which destroys itself on WM_CLOSE. */ + ret = DialogBoxParamA(GetModuleHandle(NULL), "IDD_DIALOG", 0, DestroyOnCloseDlgWinProc, 0); + todo_wine ok(0 == ret, "DialogBoxParamA returned %d, expected 0\n", ret); + SetLastError(0xdeadbeef); ret = DialogBoxParamA(GetModuleHandle(NULL), "RESOURCE_INVALID" , 0, 0, 0); ok(-1 == ret, "DialogBoxParamA returned %d, expected -1\n", ret); -- 2.11.4.GIT