From 81198c59dd157c6dab70edf0a5c95d62003441d3 Mon Sep 17 00:00:00 2001 From: James Tabor Date: Sat, 18 Aug 2012 21:35:35 +0000 Subject: [PATCH] [Win32SS] - Do not register classes in case of errors at startup. - Fix desktop background. svn path=/trunk/; revision=57100 --- reactos/win32ss/user/ntuser/class.c | 25 +++++++++++++++++---- reactos/win32ss/user/user32/windows/class.c | 24 ++++++++++---------- 2 files changed, 33 insertions(+), 16 deletions(-) diff --git a/reactos/win32ss/user/ntuser/class.c b/reactos/win32ss/user/ntuser/class.c index 9c62cf09bc8..0ced1fced60 100644 --- a/reactos/win32ss/user/ntuser/class.c +++ b/reactos/win32ss/user/ntuser/class.c @@ -13,10 +13,10 @@ REGISTER_SYSCLASS DefaultServerClasses[] = { { ((PWSTR)((ULONG_PTR)(WORD)(0x8001))), CS_GLOBALCLASS|CS_DBLCLKS, - NULL, - 0, + NULL, // Use User32 procs + sizeof(ULONG)*2, (HICON)IDC_ARROW, - (HBRUSH)(COLOR_BACKGROUND + 1), + (HBRUSH)(COLOR_BACKGROUND), FNID_DESKTOP, ICLS_DESKTOP }, @@ -47,6 +47,17 @@ REGISTER_SYSCLASS DefaultServerClasses[] = FNID_SCROLLBAR, ICLS_SCROLLBAR }, +#if 0 + { ((PWSTR)((ULONG_PTR)(WORD)(0x8006))), // Tooltips + CS_PARENTDC|CS_DBLCLKS, + NULL, // Use User32 procs + 0, + (HICON)IDC_ARROW, + 0, + FNID_TOOLTIPS, + ICLS_TOOLTIPS + }, +#endif { ((PWSTR)((ULONG_PTR)(WORD)(0x8004))), // IconTitle is here for now... 0, NULL, // Use User32 procs @@ -1948,6 +1959,7 @@ UserRegisterSystemClasses(VOID) WNDCLASSEXW wc; PCLS Class; BOOL Ret = TRUE; + HBRUSH hBrush; DWORD Flags = 0; if (ppi->W32PF_flags & W32PF_CLASSESREGISTERED) @@ -1992,7 +2004,12 @@ UserRegisterSystemClasses(VOID) wc.cbWndExtra = DefaultServerClasses[i].ExtraBytes; wc.hIcon = NULL; wc.hCursor = DefaultServerClasses[i].hCursor; - wc.hbrBackground = DefaultServerClasses[i].hBrush; + hBrush = DefaultServerClasses[i].hBrush; + if (hBrush <= (HBRUSH)COLOR_MENUBAR) + { + hBrush = IntGetSysColorBrush((INT)hBrush); + } + wc.hbrBackground = hBrush; wc.lpszMenuName = NULL; wc.lpszClassName = ClassName.Buffer; wc.hIconSm = NULL; diff --git a/reactos/win32ss/user/user32/windows/class.c b/reactos/win32ss/user/user32/windows/class.c index 45c43fbf604..8fe30360918 100644 --- a/reactos/win32ss/user/user32/windows/class.c +++ b/reactos/win32ss/user/user32/windows/class.c @@ -210,12 +210,6 @@ GetClassInfoExA( return FALSE; } - if (!RegisterDefaultClasses) - { - ERR("GetClassInfoExA RegisterSystemControls\n"); - RegisterSystemControls(); - } - if (IS_ATOM(lpszClass)) { ClassName.Buffer = (PWSTR)((ULONG_PTR)lpszClass); @@ -230,6 +224,12 @@ GetClassInfoExA( } } + if (!RegisterDefaultClasses) + { + ERR("GetClassInfoExA RegisterSystemControls\n"); + RegisterSystemControls(); + } + Ret = NtUserGetClassInfo(hInstance, &ClassName, (LPWNDCLASSEXW)lpwcx, @@ -289,12 +289,6 @@ GetClassInfoExW( return FALSE; } - if (!RegisterDefaultClasses) - { - ERR("GetClassInfoExW RegisterSystemControls\n"); - RegisterSystemControls(); - } - if (IS_ATOM(lpszClass)) { ClassName.Buffer = (PWSTR)((ULONG_PTR)lpszClass); @@ -305,6 +299,12 @@ GetClassInfoExW( lpszClass); } + if (!RegisterDefaultClasses) + { + ERR("GetClassInfoExW RegisterSystemControls\n"); + RegisterSystemControls(); + } + Ret = NtUserGetClassInfo( hInstance, &ClassName, lpwcx,