From 61d418ad10872d10dcb4fd1b1e7efee45b644e68 Mon Sep 17 00:00:00 2001 From: otya Date: Sat, 28 Jul 2018 14:26:22 +0900 Subject: [PATCH] some --- user/message.c | 9 ++++++++- user/window.c | 15 +++++++-------- 2 files changed, 15 insertions(+), 9 deletions(-) diff --git a/user/message.c b/user/message.c index 1b552e08abd..c85af7218ff 100644 --- a/user/message.c +++ b/user/message.c @@ -1304,7 +1304,10 @@ LRESULT WINPROC_CallProc16To32A( winproc_callback_t callback, HWND16 hwnd, UINT1 break; case WM_SETICON: ret = callback(hwnd32, msg, wParam, get_icon_32(lParam), result, arg); - ERR("SI %x\n", lParam); + break; + case WM_QUERYDRAGICON: + ret = callback(hwnd32, msg, wParam, lParam, result, arg); + *result = get_icon_16(*result); break; default: ret = callback( hwnd32, msg, wParam, lParam, result, arg ); @@ -1899,6 +1902,10 @@ LRESULT WINPROC_CallProc32ATo16( winproc_callback16_t callback, HWND hwnd, UINT case WM_SETICON: ret = callback(HWND_16(hwnd), msg, wParam, get_icon_16(lParam), result, arg); break; + case WM_QUERYDRAGICON: + ret = callback(HWND_16(hwnd), msg, wParam, lParam, result, arg); + *result = get_icon_32(*result); + break; default: ret = callback( HWND_16(hwnd), msg, wParam, lParam, result, arg ); break; diff --git a/user/window.c b/user/window.c index ab0a1ca5e3b..2606e115d4b 100644 --- a/user/window.c +++ b/user/window.c @@ -2227,20 +2227,19 @@ HWND16 WINAPI CreateWindowEx16( DWORD exStyle, LPCSTR className, if (!IS_INTRESOURCE(className)) { - //remove wide - //WCHAR bufferW[256]; - - //if (!MultiByteToWideChar( CP_ACP, 0, className, -1, bufferW, sizeof(bufferW)/sizeof(WCHAR) )) - // return 0; - //hwnd = create_window16( (CREATESTRUCTW *)&cs, bufferW, HINSTANCE_32(instance), FALSE ); - hwnd = create_window16( (CREATESTRUCTW *)&cs, className, HINSTANCE_32(instance), FALSE ); } else { if (!GlobalGetAtomNameA( LOWORD(className), buffer, sizeof(buffer) )) return 0; cs.lpszClass = buffer; - hwnd = create_window16( (CREATESTRUCTW *)&cs, (LPCWSTR)className, HINSTANCE_32(instance), FALSE ); } + WNDCLASSA wndclass; + //reactos win32ss/user/ntuser/window.c + if (GetClassInfoExA(cs.hInstance, cs.lpszClass, &wndclass) && cs.hwndParent && (wndclass.style & CS_PARENTDC) && !(GetWindowLongA(cs.hwndParent, GWL_STYLE) & WS_CLIPCHILDREN)) + { + cs.style &= ~(WS_CLIPSIBLINGS | WS_CLIPCHILDREN); + } + hwnd = create_window16((CREATESTRUCTW *)&cs, (LPCWSTR)className, HINSTANCE_32(instance), FALSE); HWND16 hWnd16 = HWND_16(hwnd); InitWndProc16(hwnd, hWnd16); SetWindowHInst16(hWnd16, instance);