Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=17205
-- v3: user32/msgbox: Use a windows hook to trap Ctrl+C user32/msgbox: Support WM_COPY Message
From: Alistair Leslie-Hughes leslie_alistair@hotmail.com
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=17205
Signed-off-by: Alistair Leslie-Hughes leslie_alistair@hotmail.com --- dlls/user32/msgbox.c | 85 ++++++++++++++++- dlls/user32/tests/dialog.c | 166 ++++++++++++++++++++++++++++++++++ dlls/user32/tests/resource.rc | 11 +++ 3 files changed, 257 insertions(+), 5 deletions(-)
diff --git a/dlls/user32/msgbox.c b/dlls/user32/msgbox.c index 4d345777a10..6b5d867eb1f 100644 --- a/dlls/user32/msgbox.c +++ b/dlls/user32/msgbox.c @@ -41,6 +41,11 @@ struct ThreadWindows HWND *handles; };
+/* Index the order the buttons need to appear to an ID* constant */ +static const int buttonOrder[10] = { IDYES, IDNO, IDOK, IDABORT, IDRETRY, + IDCANCEL, IDIGNORE, IDTRYAGAIN, + IDCONTINUE, IDHELP }; + static BOOL CALLBACK MSGBOX_EnumProc(HWND hwnd, LPARAM lParam) { struct ThreadWindows *threadWindows = (struct ThreadWindows *)lParam; @@ -74,11 +79,6 @@ static void MSGBOX_OnInit(HWND hwnd, LPMSGBOXPARAMSW lpmb) WCHAR *buffer = NULL; const WCHAR *ptr;
- /* Index the order the buttons need to appear to an ID* constant */ - static const int buttonOrder[10] = { IDYES, IDNO, IDOK, IDABORT, IDRETRY, - IDCANCEL, IDIGNORE, IDTRYAGAIN, - IDCONTINUE, IDHELP }; - nclm.cbSize = sizeof(nclm); SystemParametersInfoW (SPI_GETNONCLIENTMETRICS, 0, &nclm, 0);
@@ -320,6 +320,76 @@ static void MSGBOX_OnInit(HWND hwnd, LPMSGBOXPARAMSW lpmb) HeapFree( GetProcessHeap(), 0, buffer ); }
+static void MSGBOX_CopyToClipbaord( HWND hwnd ) +{ + int i; + static const WCHAR line[] = L"---------------------------\r\n"; + static const WCHAR carriage[] = L"\r\n"; + static const WCHAR spaces[] = L" "; + int lenTitle = GetWindowTextLengthW(hwnd) + 1; + int lenMsg = GetWindowTextLengthW(GetDlgItem(hwnd, MSGBOX_IDTEXT)) + 1; + + /* + --------------------------- + Dialog Title + --------------------------- + Dialog Message + --------------------------- + Button(s) Text. OK + --------------------------- + */ + int len = ((wcslen(carriage) * 3) + (wcslen(line) * 4) + lenTitle + lenMsg) * sizeof(WCHAR); + WCHAR *text = heap_alloc(len); + if(text) + { + lstrcpyW(text, line); + if (GetWindowTextW(hwnd, text + lstrlenW(text), lenTitle)) + { + HGLOBAL hMem; + WCHAR *data; + + lstrcatW(text, carriage); + lstrcatW(text, line); + GetWindowTextW(GetDlgItem(hwnd, MSGBOX_IDTEXT), text + lstrlenW(text), lenMsg); + lstrcatW(text, carriage); + lstrcatW(text, line); + + for (i = 0; i < ARRAY_SIZE(buttonOrder); i++) + { + HWND hItem = GetDlgItem(hwnd, buttonOrder[i]); + if (GetWindowLongW(hItem, GWL_STYLE) & WS_VISIBLE) + { + WCHAR buffer[1024] = {0}; + int j = 0, k = lstrlenW(text); + GetWindowTextW(hItem, buffer, 1024); + while(buffer[j] != 0) + { + if(buffer[j] != '&') + text[k++] = buffer[j]; + j++; + } + text[k] = 0; + lstrcatW(text, spaces); + } + } + + lstrcatW(text, carriage); + lstrcatW(text, line); + + hMem = GlobalAlloc(GMEM_MOVEABLE|GMEM_DDESHARE|GMEM_ZEROINIT, (len + 1) * sizeof(WCHAR)); + data = GlobalLock(hMem); + lstrcpyW(data, text); + GlobalUnlock(hMem); + + OpenClipboard(hwnd); + NtUserEmptyClipboard(); + SetClipboardData(CF_UNICODETEXT, hMem); + NtUserCloseClipboard(); + } + + heap_free(text); + } +}
/************************************************************************** * MSGBOX_DlgProc @@ -338,6 +408,11 @@ static INT_PTR CALLBACK MSGBOX_DlgProc( HWND hwnd, UINT message, SetPropA(hwnd, "WINE_MSGBOX_HELPCALLBACK", mbp->lpfnMsgBoxCallback); break; } + case WM_COPY: + { + MSGBOX_CopyToClipbaord(hwnd); + break; + }
case WM_COMMAND: switch (LOWORD(wParam)) diff --git a/dlls/user32/tests/dialog.c b/dlls/user32/tests/dialog.c index 7ea0d13c0f3..41572b29ecc 100644 --- a/dlls/user32/tests/dialog.c +++ b/dlls/user32/tests/dialog.c @@ -2068,6 +2068,171 @@ static void test_MessageBoxFontTest(void) DestroyWindow(hDlg); }
+static const char msgbox_title[] = "%5!z9ZXw*ia;57n/FGl.bCH,Su"mfKN;foCqAU'j6AmoJgAc_D:Z0A'E6PF_O/w"; + +DWORD WINAPI WorkerThread(void *param) +{ + WCHAR *expected = param; + char windowTitle[sizeof(msgbox_title)]; + HWND hwndMbox; + BOOL succeeded = FALSE; + + Sleep(200); + + hwndMbox = GetForegroundWindow(); + + /* Find the Window, if it doesn't have focus */ + if (!(IsWindow(hwndMbox) && + GetWindowTextA(hwndMbox, windowTitle, sizeof(msgbox_title)) && + lstrcmpA(msgbox_title, windowTitle) == 0)) + { + hwndMbox = FindWindowA(NULL, msgbox_title); + if (!IsWindow(hwndMbox)) + goto cleanup; + } + + SendMessageA(hwndMbox, WM_COPY, 0, 0); + + if (IsClipboardFormatAvailable(CF_UNICODETEXT) && OpenClipboard(NULL)) + { + HANDLE textHandle = GetClipboardData(CF_UNICODETEXT); + WCHAR *text = GlobalLock(textHandle); + + if (text != NULL) + { + succeeded = lstrcmpW(expected, text) == 0; + if(!succeeded) + { + ok(0, "%s\n", wine_dbgstr_w(text)); + ok(0, "%s\n", wine_dbgstr_w(expected)); + } + + GlobalUnlock(textHandle); + } + else + ok(0, "No text on clipboard.\n"); + + CloseClipboard(); + + } + else + trace("Clipboard error\n"); + + PostMessageA(hwndMbox, WM_COMMAND, IDIGNORE, 0); /* For MB_ABORTRETRYIGNORE dialog. */ + PostMessageA(hwndMbox, WM_CLOSE, 0, 0); + +cleanup: + ok(succeeded, "Failed to get string.\n"); + + return 0; +} + +static WCHAR *shell_get_resource_string(UINT id) +{ + const WCHAR *resource; + unsigned int size; + WCHAR *ret; + + size = LoadStringW(NULL, id, (WCHAR *)&resource, 0); + ret = malloc((size + 1) * sizeof(WCHAR)); + memcpy(ret, resource, size * sizeof(WCHAR)); + ret[size] = 0; + return ret; +} + +static WCHAR *create_msgbox_message(UINT res1, UINT res2, UINT res3) +{ + /* + --------------------------- + Dialog Title + --------------------------- + Dialog Message + --------------------------- + Button(s) Text. OK<+3 spaces> + --------------------------- + */ + static WCHAR text[512]; + WCHAR *btn1text = shell_get_resource_string(res1); + + lstrcpyW(text, L"---------------------------\r\n"); + lstrcatW(text, L"%5!z9ZXw*ia;57n/FGl.bCH,Su"mfKN;foCqAU'j6AmoJgAc_D:Z0A'E6PF_O/w"); + lstrcatW(text, L"\r\n"); + lstrcatW(text, L"---------------------------\r\n"); + lstrcatW(text, L"Message\r\n"); + lstrcatW(text, L"---------------------------\r\n"); + + lstrcatW(text, btn1text); + lstrcatW(text, L" "); + free(btn1text); + + if (res2 != 0) + { + WCHAR *btn2text = shell_get_resource_string(res2); + lstrcatW(text, btn2text); + lstrcatW(text, L" "); + free(btn2text); + } + if (res3 != 0) + { + WCHAR *btn3text = shell_get_resource_string(res3); + lstrcatW(text, btn3text); + lstrcatW(text, L" "); + free(btn3text); + } + lstrcatW(text, L"\r\n---------------------------\r\n"); + + return text; +} + +static void test_MessageBox_WM_COPY_Test(void) +{ + DWORD tid = 0; + WCHAR *expected; + HANDLE hthread; + + expected = create_msgbox_message(102 /* OK */, 0, 0); + hthread = CreateThread(NULL, 0, WorkerThread, expected, 0, &tid); + MessageBoxA(NULL, "Message", msgbox_title, MB_OK); + ok(WaitForSingleObject(hthread, 2000) == WAIT_OBJECT_0, "WaitForSingleObject failed\n"); + CloseHandle(hthread); + + expected = create_msgbox_message(102 /* OK */, 105 /* Cancel */, 0); + hthread = CreateThread(NULL, 0, WorkerThread, expected, 0, &tid); + MessageBoxA(NULL, "Message", msgbox_title, MB_OKCANCEL); + ok(WaitForSingleObject(hthread, 2000) == WAIT_OBJECT_0, "WaitForSingleObject failed\n"); + CloseHandle(hthread); + + expected = create_msgbox_message(103 /* Abort */, 104 /* Retry */, 106 /* Ignore */); + hthread = CreateThread(NULL, 0, WorkerThread, expected, 0, &tid); + MessageBoxA(NULL, "Message", msgbox_title, MB_ABORTRETRYIGNORE); + ok(WaitForSingleObject(hthread, 2000) == WAIT_OBJECT_0, "WaitForSingleObject failed\n"); + CloseHandle(hthread); + + expected = create_msgbox_message(100 /* Yes */, 101 /* No */, 0); + hthread = CreateThread(NULL, 0, WorkerThread, expected, 0, &tid); + MessageBoxA(NULL, "Message", msgbox_title, MB_YESNO); + ok(WaitForSingleObject(hthread, 2000) == WAIT_OBJECT_0, "WaitForSingleObject failed\n"); + CloseHandle(hthread); + + expected = create_msgbox_message(100 /* Yes */, 101 /* No */, 105 /* Cancel */); + hthread = CreateThread(NULL, 0, WorkerThread, expected, 0, &tid); + MessageBoxA(NULL, "Message", msgbox_title, MB_YESNOCANCEL); + ok(WaitForSingleObject(hthread, 2000) == WAIT_OBJECT_0, "WaitForSingleObject failed\n"); + CloseHandle(hthread); + + expected = create_msgbox_message(104 /* Retry */, 105 /* Cancel */, 0); + hthread = CreateThread(NULL, 0, WorkerThread, expected, 0, &tid); + MessageBoxA(NULL, "Message", msgbox_title, MB_RETRYCANCEL); + ok(WaitForSingleObject(hthread, 2000) == WAIT_OBJECT_0, "WaitForSingleObject failed\n"); + CloseHandle(hthread); + + expected = create_msgbox_message(105 /* Cancel */, 107 /* Try again */, 108 /* Continue */); + hthread = CreateThread(NULL, 0, WorkerThread, expected, 0, &tid); + MessageBoxA(NULL, "Message", msgbox_title, MB_CANCELTRYCONTINUE); + ok(WaitForSingleObject(hthread, 2000) == WAIT_OBJECT_0, "WaitForSingleObject failed\n"); + CloseHandle(hthread); +} + static void test_SaveRestoreFocus(void) { HWND hDlg; @@ -2440,6 +2605,7 @@ START_TEST(dialog)
if (!RegisterWindowClasses()) assert(0);
+ test_MessageBox_WM_COPY_Test(); test_dialog_custom_data(); test_GetNextDlgItem(); test_IsDialogMessage(); diff --git a/dlls/user32/tests/resource.rc b/dlls/user32/tests/resource.rc index a957e50689d..5056386ff0e 100644 --- a/dlls/user32/tests/resource.rc +++ b/dlls/user32/tests/resource.rc @@ -42,6 +42,17 @@ STRINGTABLE 0 "String resource" 1 "Another string resource" 2 L"This is a wide string resource" + + 100 "Yes" + 101 "No" + 102 "OK" + 103 "Abort" + 104 "Retry" + 105 "Cancel" + 106 "Ignore" + 107 "Try Again" + 108 "Continue" + 65534 "Test high id" }
From: Alistair Leslie-Hughes leslie_alistair@hotmail.com
--- dlls/user32/msgbox.c | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+)
diff --git a/dlls/user32/msgbox.c b/dlls/user32/msgbox.c index 6b5d867eb1f..bf28413f39d 100644 --- a/dlls/user32/msgbox.c +++ b/dlls/user32/msgbox.c @@ -391,6 +391,22 @@ static void MSGBOX_CopyToClipbaord( HWND hwnd ) } }
+HHOOK msghook_handle; + +LRESULT CALLBACK msg_hook_proc(int nCode, WPARAM wParam, LPARAM lParam) +{ + MSG *msg = (MSG *)lParam; + if (nCode == MSGF_DIALOGBOX && msg->message == WM_KEYUP) + { + if ( (msg->wParam == 'C' || msg->wParam == 'c') && (NtUserGetKeyState(VK_CONTROL) & 0x8000)) + { + MSGBOX_CopyToClipbaord(GetParent(msg->hwnd)); + } + } + + return NtUserCallNextHookEx(msghook_handle, nCode, wParam, lParam); +} + /************************************************************************** * MSGBOX_DlgProc * @@ -406,6 +422,7 @@ static INT_PTR CALLBACK MSGBOX_DlgProc( HWND hwnd, UINT message, SetWindowContextHelpId(hwnd, mbp->dwContextHelpId); MSGBOX_OnInit(hwnd, mbp); SetPropA(hwnd, "WINE_MSGBOX_HELPCALLBACK", mbp->lpfnMsgBoxCallback); + msghook_handle = SetWindowsHookExA(WH_MSGFILTER, msg_hook_proc, NULL, GetCurrentThreadId()); break; } case WM_COPY: @@ -413,6 +430,9 @@ static INT_PTR CALLBACK MSGBOX_DlgProc( HWND hwnd, UINT message, MSGBOX_CopyToClipbaord(hwnd); break; } + case WM_DESTROY: + NtUserUnhookWindowsHookEx(msghook_handle); + break;
case WM_COMMAND: switch (LOWORD(wParam))
Hi,
It looks like your patch introduced the new failures shown below. Please investigate and fix them before resubmitting your patch. If they are not new, fixing them anyway would help a lot. Otherwise please ask for the known failures list to be updated.
The tests also ran into some preexisting test failures. If you know how to fix them that would be helpful. See the TestBot job for the details:
The full results can be found at: https://testbot.winehq.org/JobDetails.pl?Key=143898
Your paranoid android.
=== w7u_el (32 bit report) ===
user32: dialog.c:2125: Test failed: Failed to get string. dialog: Timeout
=== w1064_tsign (32 bit report) ===
user32: dialog.c:2125: Test failed: Failed to get string.
=== w10pro64_ar (64 bit report) ===
user32: dialog.c:2106: Test failed: L"---------------------------\r\n%5!z9ZXw*ia;57n/FGl.bCH,Su"mfKN;foCqAU'j6AmoJgAc_D:Z0A'E6PF_O/w\r\n---------------------------\r\nMessage\r\n---------------------------\r\n\0645\0648\0627\0641\0642 \r\n---------------------------\r\n" dialog.c:2107: Test failed: L"---------------------------\r\n%5!z9ZXw*ia;57n/FGl.bCH,Su"mfKN;foCqAU'j6AmoJgAc_D:Z0A'E6PF_O/w\r\n---------------------------\r\nMessage\r\n---------------------------\r\nOK \r\n---------------------------\r\n" dialog.c:2125: Test failed: Failed to get string. dialog.c:2106: Test failed: L"---------------------------\r\n%5!z9ZXw*ia;57n/FGl.bCH,Su"mfKN;foCqAU'j6AmoJgAc_D:Z0A'E6PF_O/w\r\n---------------------------\r\nMessage\r\n---------------------------\r\n\0645\0648\0627\0641\0642 \0625\0644\063a\0627\0621 \0627\0644\0623\0645\0631 \r\n---------------------------\r\n" dialog.c:2107: Test failed: L"---------------------------\r\n%5!z9ZXw*ia;57n/FGl.bCH,Su"mfKN;foCqAU'j6AmoJgAc_D:Z0A'E6PF_O/w\r\n---------------------------\r\nMessage\r\n---------------------------\r\nOK Cancel \r\n---------------------------\r\n" dialog.c:2125: Test failed: Failed to get string. dialog.c:2106: Test failed: L"---------------------------\r\n%5!z9ZXw*ia;57n/FGl.bCH,Su"mfKN;foCqAU'j6AmoJgAc_D:Z0A'E6PF_O/w\r\n---------------------------\r\nMessage\r\n---------------------------\r\n\0625\062c\0647\0627\0636 \0623\0639\062f \0627\0644\0645\062d\0627\0648\0644\0629 \062a\062c\0627\0647\0644 \r"... dialog.c:2107: Test failed: L"---------------------------\r\n%5!z9ZXw*ia;57n/FGl.bCH,Su"mfKN;foCqAU'j6AmoJgAc_D:Z0A'E6PF_O/w\r\n---------------------------\r\nMessage\r\n---------------------------\r\nAbort Retry Ignore \r\n---------------------------\r\n" dialog.c:2125: Test failed: Failed to get string. dialog.c:2106: Test failed: L"---------------------------\r\n%5!z9ZXw*ia;57n/FGl.bCH,Su"mfKN;foCqAU'j6AmoJgAc_D:Z0A'E6PF_O/w\r\n---------------------------\r\nMessage\r\n---------------------------\r\n\0646\0639\0645 \0644\0627 \r\n---------------------------\r\n" dialog.c:2107: Test failed: L"---------------------------\r\n%5!z9ZXw*ia;57n/FGl.bCH,Su"mfKN;foCqAU'j6AmoJgAc_D:Z0A'E6PF_O/w\r\n---------------------------\r\nMessage\r\n---------------------------\r\nYes No \r\n---------------------------\r\n" dialog.c:2125: Test failed: Failed to get string. dialog.c:2106: Test failed: L"---------------------------\r\n%5!z9ZXw*ia;57n/FGl.bCH,Su"mfKN;foCqAU'j6AmoJgAc_D:Z0A'E6PF_O/w\r\n---------------------------\r\nMessage\r\n---------------------------\r\n\0646\0639\0645 \0644\0627 \0625\0644\063a\0627\0621 \0627\0644\0623\0645\0631 \r\n---------------------------\r" dialog.c:2107: Test failed: L"---------------------------\r\n%5!z9ZXw*ia;57n/FGl.bCH,Su"mfKN;foCqAU'j6AmoJgAc_D:Z0A'E6PF_O/w\r\n---------------------------\r\nMessage\r\n---------------------------\r\nYes No Cancel \r\n---------------------------\r\n" dialog.c:2125: Test failed: Failed to get string. dialog.c:2106: Test failed: L"---------------------------\r\n%5!z9ZXw*ia;57n/FGl.bCH,Su"mfKN;foCqAU'j6AmoJgAc_D:Z0A'E6PF_O/w\r\n---------------------------\r\nMessage\r\n---------------------------\r\n\0623\0639\062f \0627\0644\0645\062d\0627\0648\0644\0629 \0625\0644\063a\0627\0621 \0627\0644\0623\0645\0631 \r\n"... dialog.c:2107: Test failed: L"---------------------------\r\n%5!z9ZXw*ia;57n/FGl.bCH,Su"mfKN;foCqAU'j6AmoJgAc_D:Z0A'E6PF_O/w\r\n---------------------------\r\nMessage\r\n---------------------------\r\nRetry Cancel \r\n---------------------------\r\n" dialog.c:2125: Test failed: Failed to get string. dialog.c:2106: Test failed: L"---------------------------\r\n%5!z9ZXw*ia;57n/FGl.bCH,Su"mfKN;foCqAU'j6AmoJgAc_D:Z0A'E6PF_O/w\r\n---------------------------\r\nMessage\r\n---------------------------\r\n\0625\0644\063a\0627\0621 \0627\0644\0623\0645\0631 \0625\0639\0627\062f\0629 \0627\0644\0645\062d\0627\0648\0644 "... dialog.c:2107: Test failed: L"---------------------------\r\n%5!z9ZXw*ia;57n/FGl.bCH,Su"mfKN;foCqAU'j6AmoJgAc_D:Z0A'E6PF_O/w\r\n---------------------------\r\nMessage\r\n---------------------------\r\nCancel Try Again Continue \r\n---------------------------\r\n" dialog.c:2125: Test failed: Failed to get string.
=== w10pro64_ja (64 bit report) ===
user32: dialog.c:2106: Test failed: L"---------------------------\r\n%5!z9ZXw*ia;57n/FGl.bCH,Su"mfKN;foCqAU'j6AmoJgAc_D:Z0A'E6PF_O/w\r\n---------------------------\r\nMessage\r\n---------------------------\r\nOK \30ad\30e3\30f3\30bb\30eb \r\n---------------------------\r\n" dialog.c:2107: Test failed: L"---------------------------\r\n%5!z9ZXw*ia;57n/FGl.bCH,Su"mfKN;foCqAU'j6AmoJgAc_D:Z0A'E6PF_O/w\r\n---------------------------\r\nMessage\r\n---------------------------\r\nOK Cancel \r\n---------------------------\r\n" dialog.c:2125: Test failed: Failed to get string. dialog.c:2106: Test failed: L"---------------------------\r\n%5!z9ZXw*ia;57n/FGl.bCH,Su"mfKN;foCqAU'j6AmoJgAc_D:Z0A'E6PF_O/w\r\n---------------------------\r\nMessage\r\n---------------------------\r\n\4e2d\6b62(A) \518d\8a66\884c(R) \7121\8996(I) \r\n---------------------------\r\n" dialog.c:2107: Test failed: L"---------------------------\r\n%5!z9ZXw*ia;57n/FGl.bCH,Su"mfKN;foCqAU'j6AmoJgAc_D:Z0A'E6PF_O/w\r\n---------------------------\r\nMessage\r\n---------------------------\r\nAbort Retry Ignore \r\n---------------------------\r\n" dialog.c:2125: Test failed: Failed to get string. dialog.c:2106: Test failed: L"---------------------------\r\n%5!z9ZXw*ia;57n/FGl.bCH,Su"mfKN;foCqAU'j6AmoJgAc_D:Z0A'E6PF_O/w\r\n---------------------------\r\nMessage\r\n---------------------------\r\n\306f\3044(Y) \3044\3044\3048(N) \r\n---------------------------\r\n" dialog.c:2107: Test failed: L"---------------------------\r\n%5!z9ZXw*ia;57n/FGl.bCH,Su"mfKN;foCqAU'j6AmoJgAc_D:Z0A'E6PF_O/w\r\n---------------------------\r\nMessage\r\n---------------------------\r\nYes No \r\n---------------------------\r\n" dialog.c:2125: Test failed: Failed to get string. dialog.c:2106: Test failed: L"---------------------------\r\n%5!z9ZXw*ia;57n/FGl.bCH,Su"mfKN;foCqAU'j6AmoJgAc_D:Z0A'E6PF_O/w\r\n---------------------------\r\nMessage\r\n---------------------------\r\n\306f\3044(Y) \3044\3044\3048(N) \30ad\30e3\30f3\30bb\30eb \r\n---------------------------\r\n" dialog.c:2107: Test failed: L"---------------------------\r\n%5!z9ZXw*ia;57n/FGl.bCH,Su"mfKN;foCqAU'j6AmoJgAc_D:Z0A'E6PF_O/w\r\n---------------------------\r\nMessage\r\n---------------------------\r\nYes No Cancel \r\n---------------------------\r\n" dialog.c:2125: Test failed: Failed to get string. dialog.c:2106: Test failed: L"---------------------------\r\n%5!z9ZXw*ia;57n/FGl.bCH,Su"mfKN;foCqAU'j6AmoJgAc_D:Z0A'E6PF_O/w\r\n---------------------------\r\nMessage\r\n---------------------------\r\n\518d\8a66\884c(R) \30ad\30e3\30f3\30bb\30eb \r\n---------------------------\r\n" dialog.c:2107: Test failed: L"---------------------------\r\n%5!z9ZXw*ia;57n/FGl.bCH,Su"mfKN;foCqAU'j6AmoJgAc_D:Z0A'E6PF_O/w\r\n---------------------------\r\nMessage\r\n---------------------------\r\nRetry Cancel \r\n---------------------------\r\n" dialog.c:2125: Test failed: Failed to get string. dialog.c:2106: Test failed: L"---------------------------\r\n%5!z9ZXw*ia;57n/FGl.bCH,Su"mfKN;foCqAU'j6AmoJgAc_D:Z0A'E6PF_O/w\r\n---------------------------\r\nMessage\r\n---------------------------\r\n\30ad\30e3\30f3\30bb\30eb \518d\5b9f\884c(T) \7d9a\884c(C) \r\n---------------------------\r\n" dialog.c:2107: Test failed: L"---------------------------\r\n%5!z9ZXw*ia;57n/FGl.bCH,Su"mfKN;foCqAU'j6AmoJgAc_D:Z0A'E6PF_O/w\r\n---------------------------\r\nMessage\r\n---------------------------\r\nCancel Try Again Continue \r\n---------------------------\r\n" dialog.c:2125: Test failed: Failed to get string.
=== w10pro64_zh_CN (64 bit report) ===
user32: dialog.c:2106: Test failed: L"---------------------------\r\n%5!z9ZXw*ia;57n/FGl.bCH,Su"mfKN;foCqAU'j6AmoJgAc_D:Z0A'E6PF_O/w\r\n---------------------------\r\nMessage\r\n---------------------------\r\n\786e\5b9a \r\n---------------------------\r\n" dialog.c:2107: Test failed: L"---------------------------\r\n%5!z9ZXw*ia;57n/FGl.bCH,Su"mfKN;foCqAU'j6AmoJgAc_D:Z0A'E6PF_O/w\r\n---------------------------\r\nMessage\r\n---------------------------\r\nOK \r\n---------------------------\r\n" dialog.c:2125: Test failed: Failed to get string. dialog.c:2106: Test failed: L"---------------------------\r\n%5!z9ZXw*ia;57n/FGl.bCH,Su"mfKN;foCqAU'j6AmoJgAc_D:Z0A'E6PF_O/w\r\n---------------------------\r\nMessage\r\n---------------------------\r\n\786e\5b9a \53d6\6d88 \r\n---------------------------\r\n" dialog.c:2107: Test failed: L"---------------------------\r\n%5!z9ZXw*ia;57n/FGl.bCH,Su"mfKN;foCqAU'j6AmoJgAc_D:Z0A'E6PF_O/w\r\n---------------------------\r\nMessage\r\n---------------------------\r\nOK Cancel \r\n---------------------------\r\n" dialog.c:2125: Test failed: Failed to get string. dialog.c:2106: Test failed: L"---------------------------\r\n%5!z9ZXw*ia;57n/FGl.bCH,Su"mfKN;foCqAU'j6AmoJgAc_D:Z0A'E6PF_O/w\r\n---------------------------\r\nMessage\r\n---------------------------\r\n\4e2d\6b62(A) \91cd\8bd5(R) \5ffd\7565(I) \r\n---------------------------\r\n" dialog.c:2107: Test failed: L"---------------------------\r\n%5!z9ZXw*ia;57n/FGl.bCH,Su"mfKN;foCqAU'j6AmoJgAc_D:Z0A'E6PF_O/w\r\n---------------------------\r\nMessage\r\n---------------------------\r\nAbort Retry Ignore \r\n---------------------------\r\n" dialog.c:2125: Test failed: Failed to get string. dialog.c:2106: Test failed: L"---------------------------\r\n%5!z9ZXw*ia;57n/FGl.bCH,Su"mfKN;foCqAU'j6AmoJgAc_D:Z0A'E6PF_O/w\r\n---------------------------\r\nMessage\r\n---------------------------\r\n\662f(Y) \5426(N) \r\n---------------------------\r\n" dialog.c:2107: Test failed: L"---------------------------\r\n%5!z9ZXw*ia;57n/FGl.bCH,Su"mfKN;foCqAU'j6AmoJgAc_D:Z0A'E6PF_O/w\r\n---------------------------\r\nMessage\r\n---------------------------\r\nYes No \r\n---------------------------\r\n" dialog.c:2125: Test failed: Failed to get string. dialog.c:2106: Test failed: L"---------------------------\r\n%5!z9ZXw*ia;57n/FGl.bCH,Su"mfKN;foCqAU'j6AmoJgAc_D:Z0A'E6PF_O/w\r\n---------------------------\r\nMessage\r\n---------------------------\r\n\662f(Y) \5426(N) \53d6\6d88 \r\n---------------------------\r\n" dialog.c:2107: Test failed: L"---------------------------\r\n%5!z9ZXw*ia;57n/FGl.bCH,Su"mfKN;foCqAU'j6AmoJgAc_D:Z0A'E6PF_O/w\r\n---------------------------\r\nMessage\r\n---------------------------\r\nYes No Cancel \r\n---------------------------\r\n" dialog.c:2125: Test failed: Failed to get string. dialog.c:2106: Test failed: L"---------------------------\r\n%5!z9ZXw*ia;57n/FGl.bCH,Su"mfKN;foCqAU'j6AmoJgAc_D:Z0A'E6PF_O/w\r\n---------------------------\r\nMessage\r\n---------------------------\r\n\91cd\8bd5(R) \53d6\6d88 \r\n---------------------------\r\n" dialog.c:2107: Test failed: L"---------------------------\r\n%5!z9ZXw*ia;57n/FGl.bCH,Su"mfKN;foCqAU'j6AmoJgAc_D:Z0A'E6PF_O/w\r\n---------------------------\r\nMessage\r\n---------------------------\r\nRetry Cancel \r\n---------------------------\r\n" dialog.c:2125: Test failed: Failed to get string. dialog.c:2106: Test failed: L"---------------------------\r\n%5!z9ZXw*ia;57n/FGl.bCH,Su"mfKN;foCqAU'j6AmoJgAc_D:Z0A'E6PF_O/w\r\n---------------------------\r\nMessage\r\n---------------------------\r\n\53d6\6d88 \91cd\8bd5(T) \7ee7\7eed(C) \r\n---------------------------\r\n" dialog.c:2107: Test failed: L"---------------------------\r\n%5!z9ZXw*ia;57n/FGl.bCH,Su"mfKN;foCqAU'j6AmoJgAc_D:Z0A'E6PF_O/w\r\n---------------------------\r\nMessage\r\n---------------------------\r\nCancel Try Again Continue \r\n---------------------------\r\n" dialog.c:2125: Test failed: Failed to get string.
=== w11pro64 (32 bit report) ===
user32: input.c:3975: Test failed: layered 6: button_up_hwnd_todo 0: got MSG_TEST_WIN hwnd 001100F0, msg WM_LBUTTONUP, wparam 0, lparam 0x320032 input.c:3975: Test failed: layered 6: button_up_hwnd_todo 1 (missing): MSG_TEST_WIN hwnd 001100F0, WM_LBUTTONUP, wparam 0, lparam 0x320032
=== w1064v1809 (64 bit report) ===
user32: input.c:3868: Test failed: button_up_hwnd 1 (missing): MSG_TEST_WIN hwnd 0000000000040280, WM_LBUTTONUP, wparam 0, lparam 0x320032
=== w11pro64_amd (64 bit report) ===
user32: input.c:3995: Test failed: layered 6: button_up_hwnd_todo 0: got MSG_TEST_WIN hwnd 00000000001D01C8, msg WM_LBUTTONUP, wparam 0, lparam 0x320032 input.c:3995: Test failed: layered 6: button_up_hwnd_todo 1 (missing): MSG_TEST_WIN hwnd 00000000001D01C8, WM_LBUTTONUP, wparam 0, lparam 0x320032
=== w10pro64 (32 bit report) ===
user32: win.c:3818: Test failed: GetForegroundWindow returned 000202C4 win.c:3749: Test failed: SetForegroundWindow failed, error 0 win.c:3752: Test failed: GetForegroundWindow returned 000202C4 win.c:3789: Test failed: GetForegroundWindow returned 000202C4 win.c:3865: Test failed: GetActiveWindow() = 000301D6 win.c:3868: Test failed: GetFocus() = 00000000 win.c:3871: Test failed: GetFocus() = 00000000 win.c:3874: Test failed: GetFocus() = 00000000 win.c:3877: Test failed: GetActiveWindow() = 000301D6 win.c:3881: Test failed: GetFocus() = 00000000 win.c:3884: Test failed: GetFocus() = 00000000
=== w1064v1507 (64 bit report) ===
user32: win.c:13062: Test failed: window is minimized.
=== debian11 (32 bit report) ===
Report validation errors: user32:dialog crashed (c0000005)
=== debian11 (32 bit ar:MA report) ===
user32: dialog: Timeout
=== debian11 (32 bit de report) ===
user32: dialog.c:2106: Test failed: L"---------------------------\r\n%5!z9ZXw*ia;57n/FGl.bCH,Su"mfKN;foCqAU'j6AmoJgAc_D:Z0A'E6PF_O/w\r\n---------------------------\r\nMessage\r\n---------------------------\r\nOK Abbrechen \r\n---------------------------\r\n" dialog.c:2107: Test failed: L"---------------------------\r\n%5!z9ZXw*ia;57n/FGl.bCH,Su"mfKN;foCqAU'j6AmoJgAc_D:Z0A'E6PF_O/w\r\n---------------------------\r\nMessage\r\n---------------------------\r\nOK Cancel \r\n---------------------------\r\n" dialog.c:2125: Test failed: Failed to get string. dialog.c:2106: Test failed: L"---------------------------\r\n%5!z9ZXw*ia;57n/FGl.bCH,Su"mfKN;foCqAU'j6AmoJgAc_D:Z0A'E6PF_O/w\r\n---------------------------\r\nMessage\r\n---------------------------\r\nAbbruch Wiederholen Ignorieren \r\n---------------------------\r\n" dialog.c:2107: Test failed: L"---------------------------\r\n%5!z9ZXw*ia;57n/FGl.bCH,Su"mfKN;foCqAU'j6AmoJgAc_D:Z0A'E6PF_O/w\r\n---------------------------\r\nMessage\r\n---------------------------\r\nAbort Retry Ignore \r\n---------------------------\r\n" dialog.c:2125: Test failed: Failed to get string. dialog.c:2106: Test failed: L"---------------------------\r\n%5!z9ZXw*ia;57n/FGl.bCH,Su"mfKN;foCqAU'j6AmoJgAc_D:Z0A'E6PF_O/w\r\n---------------------------\r\nMessage\r\n---------------------------\r\nJa Nein \r\n---------------------------\r\n" dialog.c:2107: Test failed: L"---------------------------\r\n%5!z9ZXw*ia;57n/FGl.bCH,Su"mfKN;foCqAU'j6AmoJgAc_D:Z0A'E6PF_O/w\r\n---------------------------\r\nMessage\r\n---------------------------\r\nYes No \r\n---------------------------\r\n" dialog.c:2125: Test failed: Failed to get string. dialog.c:2106: Test failed: L"---------------------------\r\n%5!z9ZXw*ia;57n/FGl.bCH,Su"mfKN;foCqAU'j6AmoJgAc_D:Z0A'E6PF_O/w\r\n---------------------------\r\nMessage\r\n---------------------------\r\nJa Nein Abbrechen \r\n---------------------------\r\n" dialog.c:2107: Test failed: L"---------------------------\r\n%5!z9ZXw*ia;57n/FGl.bCH,Su"mfKN;foCqAU'j6AmoJgAc_D:Z0A'E6PF_O/w\r\n---------------------------\r\nMessage\r\n---------------------------\r\nYes No Cancel \r\n---------------------------\r\n" dialog.c:2125: Test failed: Failed to get string. dialog.c:2106: Test failed: L"---------------------------\r\n%5!z9ZXw*ia;57n/FGl.bCH,Su"mfKN;foCqAU'j6AmoJgAc_D:Z0A'E6PF_O/w\r\n---------------------------\r\nMessage\r\n---------------------------\r\nWiederholen Abbrechen \r\n---------------------------\r\n" dialog.c:2107: Test failed: L"---------------------------\r\n%5!z9ZXw*ia;57n/FGl.bCH,Su"mfKN;foCqAU'j6AmoJgAc_D:Z0A'E6PF_O/w\r\n---------------------------\r\nMessage\r\n---------------------------\r\nRetry Cancel \r\n---------------------------\r\n" dialog.c:2125: Test failed: Failed to get string. dialog.c:2106: Test failed: L"---------------------------\r\n%5!z9ZXw*ia;57n/FGl.bCH,Su"mfKN;foCqAU'j6AmoJgAc_D:Z0A'E6PF_O/w\r\n---------------------------\r\nMessage\r\n---------------------------\r\nAbbrechen Erneut versuchen Fortsetzen \r\n---------------------------\r\n" dialog.c:2107: Test failed: L"---------------------------\r\n%5!z9ZXw*ia;57n/FGl.bCH,Su"mfKN;foCqAU'j6AmoJgAc_D:Z0A'E6PF_O/w\r\n---------------------------\r\nMessage\r\n---------------------------\r\nCancel Try Again Continue \r\n---------------------------\r\n" dialog.c:2125: Test failed: Failed to get string.
Report validation errors: user32:dialog crashed (c0000005)
=== debian11 (32 bit fr report) ===
user32: dialog.c:2106: Test failed: L"---------------------------\r\n%5!z9ZXw*ia;57n/FGl.bCH,Su"mfKN;foCqAU'j6AmoJgAc_D:Z0A'E6PF_O/w\r\n---------------------------\r\nMessage\r\n---------------------------\r\nOK Annuler \r\n---------------------------\r\n" dialog.c:2107: Test failed: L"---------------------------\r\n%5!z9ZXw*ia;57n/FGl.bCH,Su"mfKN;foCqAU'j6AmoJgAc_D:Z0A'E6PF_O/w\r\n---------------------------\r\nMessage\r\n---------------------------\r\nOK Cancel \r\n---------------------------\r\n" dialog.c:2125: Test failed: Failed to get string. dialog.c:2106: Test failed: L"---------------------------\r\n%5!z9ZXw*ia;57n/FGl.bCH,Su"mfKN;foCqAU'j6AmoJgAc_D:Z0A'E6PF_O/w\r\n---------------------------\r\nMessage\r\n---------------------------\r\nAbandonner R\00e9p\00e9ter Ignorer \r\n---------------------------\r\n" dialog.c:2107: Test failed: L"---------------------------\r\n%5!z9ZXw*ia;57n/FGl.bCH,Su"mfKN;foCqAU'j6AmoJgAc_D:Z0A'E6PF_O/w\r\n---------------------------\r\nMessage\r\n---------------------------\r\nAbort Retry Ignore \r\n---------------------------\r\n" dialog.c:2125: Test failed: Failed to get string. dialog.c:2106: Test failed: L"---------------------------\r\n%5!z9ZXw*ia;57n/FGl.bCH,Su"mfKN;foCqAU'j6AmoJgAc_D:Z0A'E6PF_O/w\r\n---------------------------\r\nMessage\r\n---------------------------\r\nOui Non \r\n---------------------------\r\n" dialog.c:2107: Test failed: L"---------------------------\r\n%5!z9ZXw*ia;57n/FGl.bCH,Su"mfKN;foCqAU'j6AmoJgAc_D:Z0A'E6PF_O/w\r\n---------------------------\r\nMessage\r\n---------------------------\r\nYes No \r\n---------------------------\r\n" dialog.c:2125: Test failed: Failed to get string. dialog.c:2106: Test failed: L"---------------------------\r\n%5!z9ZXw*ia;57n/FGl.bCH,Su"mfKN;foCqAU'j6AmoJgAc_D:Z0A'E6PF_O/w\r\n---------------------------\r\nMessage\r\n---------------------------\r\nOui Non Annuler \r\n---------------------------\r\n" dialog.c:2107: Test failed: L"---------------------------\r\n%5!z9ZXw*ia;57n/FGl.bCH,Su"mfKN;foCqAU'j6AmoJgAc_D:Z0A'E6PF_O/w\r\n---------------------------\r\nMessage\r\n---------------------------\r\nYes No Cancel \r\n---------------------------\r\n" dialog.c:2125: Test failed: Failed to get string. dialog.c:2106: Test failed: L"---------------------------\r\n%5!z9ZXw*ia;57n/FGl.bCH,Su"mfKN;foCqAU'j6AmoJgAc_D:Z0A'E6PF_O/w\r\n---------------------------\r\nMessage\r\n---------------------------\r\nR\00e9p\00e9ter Annuler \r\n---------------------------\r\n" dialog.c:2107: Test failed: L"---------------------------\r\n%5!z9ZXw*ia;57n/FGl.bCH,Su"mfKN;foCqAU'j6AmoJgAc_D:Z0A'E6PF_O/w\r\n---------------------------\r\nMessage\r\n---------------------------\r\nRetry Cancel \r\n---------------------------\r\n" dialog.c:2125: Test failed: Failed to get string. dialog.c:2106: Test failed: L"---------------------------\r\n%5!z9ZXw*ia;57n/FGl.bCH,Su"mfKN;foCqAU'j6AmoJgAc_D:Z0A'E6PF_O/w\r\n---------------------------\r\nMessage\r\n---------------------------\r\nAnnuler R\00e9essayer Continuer \r\n---------------------------\r\n" dialog.c:2107: Test failed: L"---------------------------\r\n%5!z9ZXw*ia;57n/FGl.bCH,Su"mfKN;foCqAU'j6AmoJgAc_D:Z0A'E6PF_O/w\r\n---------------------------\r\nMessage\r\n---------------------------\r\nCancel Try Again Continue \r\n---------------------------\r\n" dialog.c:2125: Test failed: Failed to get string. dialog.c:1897: Test failed: expected -7, got -1
=== debian11 (32 bit he:IL report) ===
user32: dialog: Timeout
=== debian11 (32 bit hi:IN report) ===
Report validation errors: user32:dialog crashed (c0000005)
=== debian11 (32 bit ja:JP report) ===
user32: dialog.c:2106: Test failed: L"---------------------------\r\n%5!z9ZXw*ia;57n/FGl.bCH,Su"mfKN;foCqAU'j6AmoJgAc_D:Z0A'E6PF_O/w\r\n---------------------------\r\nMessage\r\n---------------------------\r\nOK \30ad\30e3\30f3\30bb\30eb \r\n---------------------------\r\n" dialog.c:2107: Test failed: L"---------------------------\r\n%5!z9ZXw*ia;57n/FGl.bCH,Su"mfKN;foCqAU'j6AmoJgAc_D:Z0A'E6PF_O/w\r\n---------------------------\r\nMessage\r\n---------------------------\r\nOK Cancel \r\n---------------------------\r\n" dialog.c:2125: Test failed: Failed to get string. dialog.c:2106: Test failed: L"---------------------------\r\n%5!z9ZXw*ia;57n/FGl.bCH,Su"mfKN;foCqAU'j6AmoJgAc_D:Z0A'E6PF_O/w\r\n---------------------------\r\nMessage\r\n---------------------------\r\n\4e2d\6b62(A) \518d\8a66\884c(R) \7121\8996(I) \r\n---------------------------\r\n" dialog.c:2107: Test failed: L"---------------------------\r\n%5!z9ZXw*ia;57n/FGl.bCH,Su"mfKN;foCqAU'j6AmoJgAc_D:Z0A'E6PF_O/w\r\n---------------------------\r\nMessage\r\n---------------------------\r\nAbort Retry Ignore \r\n---------------------------\r\n" dialog.c:2125: Test failed: Failed to get string. dialog.c:2106: Test failed: L"---------------------------\r\n%5!z9ZXw*ia;57n/FGl.bCH,Su"mfKN;foCqAU'j6AmoJgAc_D:Z0A'E6PF_O/w\r\n---------------------------\r\nMessage\r\n---------------------------\r\n\306f\3044(Y) \3044\3044\3048(N) \r\n---------------------------\r\n" dialog.c:2107: Test failed: L"---------------------------\r\n%5!z9ZXw*ia;57n/FGl.bCH,Su"mfKN;foCqAU'j6AmoJgAc_D:Z0A'E6PF_O/w\r\n---------------------------\r\nMessage\r\n---------------------------\r\nYes No \r\n---------------------------\r\n" dialog.c:2125: Test failed: Failed to get string. dialog.c:2106: Test failed: L"---------------------------\r\n%5!z9ZXw*ia;57n/FGl.bCH,Su"mfKN;foCqAU'j6AmoJgAc_D:Z0A'E6PF_O/w\r\n---------------------------\r\nMessage\r\n---------------------------\r\n\306f\3044(Y) \3044\3044\3048(N) \30ad\30e3\30f3\30bb\30eb \r\n---------------------------\r\n" dialog.c:2107: Test failed: L"---------------------------\r\n%5!z9ZXw*ia;57n/FGl.bCH,Su"mfKN;foCqAU'j6AmoJgAc_D:Z0A'E6PF_O/w\r\n---------------------------\r\nMessage\r\n---------------------------\r\nYes No Cancel \r\n---------------------------\r\n" dialog.c:2125: Test failed: Failed to get string. dialog.c:2106: Test failed: L"---------------------------\r\n%5!z9ZXw*ia;57n/FGl.bCH,Su"mfKN;foCqAU'j6AmoJgAc_D:Z0A'E6PF_O/w\r\n---------------------------\r\nMessage\r\n---------------------------\r\n\518d\8a66\884c(R) \30ad\30e3\30f3\30bb\30eb \r\n---------------------------\r\n" dialog.c:2107: Test failed: L"---------------------------\r\n%5!z9ZXw*ia;57n/FGl.bCH,Su"mfKN;foCqAU'j6AmoJgAc_D:Z0A'E6PF_O/w\r\n---------------------------\r\nMessage\r\n---------------------------\r\nRetry Cancel \r\n---------------------------\r\n" dialog.c:2125: Test failed: Failed to get string. dialog.c:2106: Test failed: L"---------------------------\r\n%5!z9ZXw*ia;57n/FGl.bCH,Su"mfKN;foCqAU'j6AmoJgAc_D:Z0A'E6PF_O/w\r\n---------------------------\r\nMessage\r\n---------------------------\r\n\30ad\30e3\30f3\30bb\30eb \518d\8a66\884c(T) \7d9a\3051\308b(C) \r\n---------------------------\r\n" dialog.c:2107: Test failed: L"---------------------------\r\n%5!z9ZXw*ia;57n/FGl.bCH,Su"mfKN;foCqAU'j6AmoJgAc_D:Z0A'E6PF_O/w\r\n---------------------------\r\nMessage\r\n---------------------------\r\nCancel Try Again Continue \r\n---------------------------\r\n" dialog.c:2125: Test failed: Failed to get string.
Report validation errors: user32:dialog crashed (c0000005)
=== debian11 (32 bit zh:CN report) ===
user32: dialog.c:2106: Test failed: L"---------------------------\r\n%5!z9ZXw*ia;57n/FGl.bCH,Su"mfKN;foCqAU'j6AmoJgAc_D:Z0A'E6PF_O/w\r\n---------------------------\r\nMessage\r\n---------------------------\r\n\786e\5b9a \r\n---------------------------\r\n" dialog.c:2107: Test failed: L"---------------------------\r\n%5!z9ZXw*ia;57n/FGl.bCH,Su"mfKN;foCqAU'j6AmoJgAc_D:Z0A'E6PF_O/w\r\n---------------------------\r\nMessage\r\n---------------------------\r\nOK \r\n---------------------------\r\n" dialog.c:2125: Test failed: Failed to get string. dialog.c:2106: Test failed: L"---------------------------\r\n%5!z9ZXw*ia;57n/FGl.bCH,Su"mfKN;foCqAU'j6AmoJgAc_D:Z0A'E6PF_O/w\r\n---------------------------\r\nMessage\r\n---------------------------\r\n\786e\5b9a \53d6\6d88 \r\n---------------------------\r\n" dialog.c:2107: Test failed: L"---------------------------\r\n%5!z9ZXw*ia;57n/FGl.bCH,Su"mfKN;foCqAU'j6AmoJgAc_D:Z0A'E6PF_O/w\r\n---------------------------\r\nMessage\r\n---------------------------\r\nOK Cancel \r\n---------------------------\r\n" dialog.c:2125: Test failed: Failed to get string. dialog.c:2106: Test failed: L"---------------------------\r\n%5!z9ZXw*ia;57n/FGl.bCH,Su"mfKN;foCqAU'j6AmoJgAc_D:Z0A'E6PF_O/w\r\n---------------------------\r\nMessage\r\n---------------------------\r\n\4e2d\6b62(A) \91cd\8bd5(R) \5ffd\7565(I) \r\n---------------------------\r\n" dialog.c:2107: Test failed: L"---------------------------\r\n%5!z9ZXw*ia;57n/FGl.bCH,Su"mfKN;foCqAU'j6AmoJgAc_D:Z0A'E6PF_O/w\r\n---------------------------\r\nMessage\r\n---------------------------\r\nAbort Retry Ignore \r\n---------------------------\r\n" dialog.c:2125: Test failed: Failed to get string. dialog.c:2106: Test failed: L"---------------------------\r\n%5!z9ZXw*ia;57n/FGl.bCH,Su"mfKN;foCqAU'j6AmoJgAc_D:Z0A'E6PF_O/w\r\n---------------------------\r\nMessage\r\n---------------------------\r\n\662f(Y) \5426(N) \r\n---------------------------\r\n" dialog.c:2107: Test failed: L"---------------------------\r\n%5!z9ZXw*ia;57n/FGl.bCH,Su"mfKN;foCqAU'j6AmoJgAc_D:Z0A'E6PF_O/w\r\n---------------------------\r\nMessage\r\n---------------------------\r\nYes No \r\n---------------------------\r\n" dialog.c:2125: Test failed: Failed to get string. dialog.c:2106: Test failed: L"---------------------------\r\n%5!z9ZXw*ia;57n/FGl.bCH,Su"mfKN;foCqAU'j6AmoJgAc_D:Z0A'E6PF_O/w\r\n---------------------------\r\nMessage\r\n---------------------------\r\n\662f(Y) \5426(N) \53d6\6d88 \r\n---------------------------\r\n" dialog.c:2107: Test failed: L"---------------------------\r\n%5!z9ZXw*ia;57n/FGl.bCH,Su"mfKN;foCqAU'j6AmoJgAc_D:Z0A'E6PF_O/w\r\n---------------------------\r\nMessage\r\n---------------------------\r\nYes No Cancel \r\n---------------------------\r\n" dialog.c:2125: Test failed: Failed to get string. dialog.c:2106: Test failed: L"---------------------------\r\n%5!z9ZXw*ia;57n/FGl.bCH,Su"mfKN;foCqAU'j6AmoJgAc_D:Z0A'E6PF_O/w\r\n---------------------------\r\nMessage\r\n---------------------------\r\n\91cd\8bd5(R) \53d6\6d88 \r\n---------------------------\r\n" dialog.c:2107: Test failed: L"---------------------------\r\n%5!z9ZXw*ia;57n/FGl.bCH,Su"mfKN;foCqAU'j6AmoJgAc_D:Z0A'E6PF_O/w\r\n---------------------------\r\nMessage\r\n---------------------------\r\nRetry Cancel \r\n---------------------------\r\n" dialog.c:2125: Test failed: Failed to get string. dialog.c:2106: Test failed: L"---------------------------\r\n%5!z9ZXw*ia;57n/FGl.bCH,Su"mfKN;foCqAU'j6AmoJgAc_D:Z0A'E6PF_O/w\r\n---------------------------\r\nMessage\r\n---------------------------\r\n\53d6\6d88 \518d\8bd5(T) \7ee7\7eed(C) \r\n---------------------------\r\n" dialog.c:2107: Test failed: L"---------------------------\r\n%5!z9ZXw*ia;57n/FGl.bCH,Su"mfKN;foCqAU'j6AmoJgAc_D:Z0A'E6PF_O/w\r\n---------------------------\r\nMessage\r\n---------------------------\r\nCancel Try Again Continue \r\n---------------------------\r\n" dialog.c:2125: Test failed: Failed to get string. input.c:3893: Test failed: button_down_hwnd 0: got MSG_TEST_WIN hwnd 005B0080, msg WM_LBUTTONDOWN, wparam 0x1, lparam 0x320032 input.c:3893: Test failed: button_down_hwnd 1 (missing): MSG_TEST_WIN hwnd 005B0080, WM_LBUTTONDOWN, wparam 0x1, lparam 0x320032
Report validation errors: user32:dialog crashed (c0000005)
=== debian11b (32 bit WoW report) ===
Report validation errors: user32:dialog crashed (c0000005)
=== debian11b (64 bit WoW report) ===
user32: dialog: Timeout
Zebediah Figura (@zfigura) commented about dlls/user32/msgbox.c:
- /*
- Dialog Title
- Dialog Message
- Button(s) Text. OK
- */
- int len = ((wcslen(carriage) * 3) + (wcslen(line) * 4) + lenTitle + lenMsg) * sizeof(WCHAR);
- WCHAR *text = heap_alloc(len);
- if(text)
- {
lstrcpyW(text, line);
if (GetWindowTextW(hwnd, text + lstrlenW(text), lenTitle))
{
Early return here, and in other places in this patch, would save a level of indentation.
Also, the spacing is very inconsistent; some places have "if(", others "if (". Generally the latter is preferred.
Zebediah Figura (@zfigura) commented about dlls/user32/msgbox.c:
GetWindowTextW(hItem, buffer, 1024);
while(buffer[j] != 0)
{
if(buffer[j] != '&')
text[k++] = buffer[j];
j++;
}
text[k] = 0;
lstrcatW(text, spaces);
}
}
lstrcatW(text, carriage);
lstrcatW(text, line);
hMem = GlobalAlloc(GMEM_MOVEABLE|GMEM_DDESHARE|GMEM_ZEROINIT, (len + 1) * sizeof(WCHAR));
GMEM_ZEROINIT isn't doing anything here.
"(len + 1) * sizeof(WCHAR)" is wrong, since "len" is already in bytes and includes the null terminator.
Zebediah Figura (@zfigura) commented about dlls/user32/msgbox.c:
SetPropA(hwnd, "WINE_MSGBOX_HELPCALLBACK", mbp->lpfnMsgBoxCallback); break; }
- case WM_COPY:
- {
MSGBOX_CopyToClipbaord(hwnd);
break;
- }
These braces are unnecessary.
Zebediah Figura (@zfigura) commented about dlls/user32/msgbox.c:
}
}
+HHOOK msghook_handle;
+LRESULT CALLBACK msg_hook_proc(int nCode, WPARAM wParam, LPARAM lParam) +{
- MSG *msg = (MSG *)lParam;
- if (nCode == MSGF_DIALOGBOX && msg->message == WM_KEYUP)
- {
if ( (msg->wParam == 'C' || msg->wParam == 'c') && (NtUserGetKeyState(VK_CONTROL) & 0x8000))
That doesn't work; there are multiple orderings of key presses and releases that should yield Ctrl-C, and this won't catch the case where the Ctrl key is released before C. You probably want WM_CHAR.
Zebediah Figura (@zfigura) commented about dlls/user32/msgbox.c:
SetWindowContextHelpId(hwnd, mbp->dwContextHelpId); MSGBOX_OnInit(hwnd, mbp); SetPropA(hwnd, "WINE_MSGBOX_HELPCALLBACK", mbp->lpfnMsgBoxCallback);
msghook_handle = SetWindowsHookExA(WH_MSGFILTER, msg_hook_proc, NULL, GetCurrentThreadId());
A message hook does not at all look like the right way to handle this. Can we not get the right messages from the dialog procedure? And if not, even subclassing the dialog wndproc seems better.
I don't think these tests make sense. They're very awkward, both because of the need to poll until the window is visible, and because of the attempt to compare translated text (which I don't think we do anywhere else). They're also not very valuable, since this feature is just for debugging anyway.
I think this is a case where an out-of-tree test (or really just manual verification) is better.