diff --git a/modules/rostests/win32/user32/CMakeLists.txt b/modules/rostests/win32/user32/CMakeLists.txt index f86e696165d..765e4f15a74 100644 --- a/modules/rostests/win32/user32/CMakeLists.txt +++ b/modules/rostests/win32/user32/CMakeLists.txt @@ -1,4 +1,5 @@ add_subdirectory(biditext) +add_subdirectory(dialog_initvisible) add_subdirectory(editalign) add_subdirectory(menuaccels) add_subdirectory(messagebox) diff --git a/modules/rostests/win32/user32/dialog_initvisible/CMakeLists.txt b/modules/rostests/win32/user32/dialog_initvisible/CMakeLists.txt new file mode 100644 index 00000000000..da42dd4cf8e --- /dev/null +++ b/modules/rostests/win32/user32/dialog_initvisible/CMakeLists.txt @@ -0,0 +1,5 @@ + +add_executable(dialog_initvisible dialog_initvisible.c dialog_initvisible.rc) +set_module_type(dialog_initvisible win32gui UNICODE) +add_importlibs(dialog_initvisible user32 msvcrt kernel32) +add_rostests_file(TARGET dialog_initvisible SUBDIR suppl) diff --git a/modules/rostests/win32/user32/dialog_initvisible/dialog_initvisible.c b/modules/rostests/win32/user32/dialog_initvisible/dialog_initvisible.c new file mode 100644 index 00000000000..a2ee7d2f66c --- /dev/null +++ b/modules/rostests/win32/user32/dialog_initvisible/dialog_initvisible.c @@ -0,0 +1,65 @@ +/* + * PROJECT: ReactOS Tests + * LICENSE: GPL-2.0-or-later (https://spdx.org/licenses/GPL-2.0-or-later) + * PURPOSE: Tests whether a dialog is getting visible even if WM_INITDIALOG ends it. + * COPYRIGHT: Copyright 2026 Hermès Bélusca-Maïto + */ + +#define WIN32_NO_STATUS +#include +#include +#include + +#define NTOS_MODE_USER +#include // Needed for kdtypes.h +#include // " " " +#include // For SharedUserData + +#include "resource.h" + +INT_PTR CALLBACK +AboutDlgProc( + _In_ HWND hDlg, + _In_ UINT uMsg, + _In_ WPARAM wParam, + _In_ LPARAM lParam) +{ + UNREFERENCED_PARAMETER(lParam); + switch (uMsg) + { + case WM_INITDIALOG: + { + /* Intentional breakpoint for you to step-by-step debug into a debugger! */ + if (IsDebuggerPresent() || SharedUserData->KdDebuggerEnabled) + __debugbreak(); + + SendMessageW(hDlg, WM_COMMAND, MAKEWPARAM(IDOK, BN_CLICKED), 0); + EndDialog(hDlg, -1); + return (INT_PTR)TRUE; + } + + case WM_COMMAND: + { + if (LOWORD(wParam) == IDOK || LOWORD(wParam) == IDCANCEL) + { + EndDialog(hDlg, LOWORD(wParam)); + return (INT_PTR)TRUE; + } + break; + } + } + return (INT_PTR)FALSE; +} + +int APIENTRY +wWinMain( + _In_ HINSTANCE hInstance, + _In_ HINSTANCE hPrevInstance, + _In_ LPWSTR lpCmdLine, + _In_ int nCmdShow) +{ + UNREFERENCED_PARAMETER(hPrevInstance); + UNREFERENCED_PARAMETER(lpCmdLine); + + return DialogBoxW(hInstance, MAKEINTRESOURCEW(IDD_ABOUTBOX), NULL, AboutDlgProc); +} diff --git a/modules/rostests/win32/user32/dialog_initvisible/dialog_initvisible.rc b/modules/rostests/win32/user32/dialog_initvisible/dialog_initvisible.rc new file mode 100644 index 00000000000..3c1e36f5d9a --- /dev/null +++ b/modules/rostests/win32/user32/dialog_initvisible/dialog_initvisible.rc @@ -0,0 +1,17 @@ + +#include +#include +#include "resource.h" + +LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL + +// NOTE: Ensure the WS_VISIBLE flag is set for the test. +IDD_ABOUTBOX DIALOGEX 0, 0, 135, 62 +STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_VISIBLE +CAPTION "About Dialog_InitVisible" +FONT 8, "MS Shell Dlg" +BEGIN + LTEXT "Dialog_InitVisible, Version 1.0", IDC_STATIC, 7, 14, 114, 8, SS_NOPREFIX + LTEXT "Copyright (C) 2026 ReactOS", IDC_STATIC, 7, 26, 114, 8 + DEFPUSHBUTTON "OK", IDOK, 78, 41, 50, 14, WS_GROUP +END diff --git a/modules/rostests/win32/user32/dialog_initvisible/resource.h b/modules/rostests/win32/user32/dialog_initvisible/resource.h new file mode 100644 index 00000000000..795deabfbd8 --- /dev/null +++ b/modules/rostests/win32/user32/dialog_initvisible/resource.h @@ -0,0 +1,2 @@ +#define IDD_ABOUTBOX 101 +#define IDC_STATIC -1