user32: Also show dialogs right after a WM_TIMER message.

This commit is contained in:
Henri Verbeet 2010-03-02 11:51:52 +01:00 committed by Alexandre Julliard
parent ac08b038f0
commit 6ee4a87ad6
2 changed files with 56 additions and 0 deletions

View File

@ -815,6 +815,12 @@ INT DIALOG_DoDialogBox( HWND hwnd, HWND owner )
DispatchMessageW( &msg );
}
if (dlgInfo->flags & DF_END) break;
if (bFirstEmpty && msg.message == WM_TIMER)
{
ShowWindow( hwnd, SW_SHOWNORMAL );
bFirstEmpty = FALSE;
}
}
}
if (dlgInfo->flags & DF_OWNERENABLED) DIALOG_EnableOwner( owner );

View File

@ -1157,6 +1157,55 @@ static void test_SaveRestoreFocus(void)
DestroyWindow(hDlg);
}
static INT_PTR CALLBACK timer_message_dlg_proc(HWND wnd, UINT msg, WPARAM wparam, LPARAM lparam)
{
static int count;
BOOL visible;
switch (msg)
{
case WM_INITDIALOG:
visible = GetWindowLong(wnd, GWL_STYLE) & WS_VISIBLE;
ok(!visible, "Dialog should not be visible.\n");
SetTimer(wnd, 1, 100, NULL);
Sleep(200);
return FALSE;
case WM_COMMAND:
if (LOWORD(wparam) != IDCANCEL) return FALSE;
EndDialog(wnd, LOWORD(wparam));
return TRUE;
case WM_TIMER:
if (wparam != 1) return FALSE;
visible = GetWindowLong(wnd, GWL_STYLE) & WS_VISIBLE;
if (!count++)
{
ok(!visible, "Dialog should not be visible.\n");
PostMessage(wnd, WM_USER, 0, 0);
}
else
{
ok(visible, "Dialog should be visible.\n");
PostMessage(wnd, WM_COMMAND, IDCANCEL, 0);
}
return TRUE;
case WM_USER:
visible = GetWindowLong(wnd, GWL_STYLE) & WS_VISIBLE;
ok(visible, "Dialog should be visible.\n");
return TRUE;
default:
return FALSE;
}
}
static void test_timer_message(void)
{
DialogBoxA(g_hinst, "RADIO_TEST_DIALOG", NULL, timer_message_dlg_proc);
}
START_TEST(dialog)
{
g_hinst = GetModuleHandleA (0);
@ -1172,4 +1221,5 @@ START_TEST(dialog)
test_DisabledDialogTest();
test_MessageBoxFontTest();
test_SaveRestoreFocus();
test_timer_message();
}