From: David Quintana Date: Sun, 2 Nov 2014 20:17:23 +0000 (+0000) Subject: [RSHELL] X-Git-Tag: backups/shell-experiments@75904~77 X-Git-Url: https://git.reactos.org/?p=reactos.git;a=commitdiff_plain;h=3da5418d3f19d5780bb237e45ea18cd06b431397;ds=sidebyside [RSHELL] [STOBJECT] * Some nitpicking. [SHELL32] * Fix missing null-termination by using proper string literals. svn path=/branches/shell-experiments/; revision=65194 --- diff --git a/base/shell/rshell/CDesktopBrowser.cpp b/base/shell/rshell/CDesktopBrowser.cpp index 928d0ee4708..01985dc5a5c 100644 --- a/base/shell/rshell/CDesktopBrowser.cpp +++ b/base/shell/rshell/CDesktopBrowser.cpp @@ -26,10 +26,8 @@ BOOL WINAPI SetShellWindowEx(HWND, HWND); #define SHDESK_TAG 0x4b534544 -static const WCHAR szProgmanClassName [] = { 'P', 'r', 'o', 'g', 'm', 'a', 'n' }; -static const WCHAR szProgmanWindowName [] = { - 'P', 'r', 'o', 'g', 'r', 'a', 'm', ' ', 'M', 'a', 'n', 'a', 'g', 'e', 'r' -}; +static const WCHAR szProgmanClassName [] = L"Progman"; +static const WCHAR szProgmanWindowName [] = L"Program Manager"; class CDesktopBrowser : public CComObjectRootEx, @@ -542,7 +540,7 @@ HANDLE WINAPI SHCreateDesktop(IShellDesktopTray *ShellDesk) rcDesk.bottom = GetSystemMetrics(SM_CYSCREEN); } - hWndDesk = CreateWindowExW(0, szProgmanClassName, szProgmanWindowName, + hWndDesk = CreateWindowExW(WS_EX_TOOLWINDOW, szProgmanClassName, szProgmanWindowName, WS_POPUP | WS_VISIBLE | WS_CLIPSIBLINGS | WS_CLIPCHILDREN, rcDesk.left, rcDesk.top, rcDesk.right, rcDesk.bottom, NULL, NULL, shell32_hInstance, reinterpret_cast(ShellDesk)); diff --git a/base/shell/rshell/CStartMenu.cpp b/base/shell/rshell/CStartMenu.cpp index 9889a950629..0abaacc0ddc 100644 --- a/base/shell/rshell/CStartMenu.cpp +++ b/base/shell/rshell/CStartMenu.cpp @@ -85,13 +85,20 @@ private: return S_OK; hr = IUnknown_GetSite(m_pDeskBar, IID_PPV_ARG(ITrayPriv, &m_pTrayPriv)); + if (FAILED_UNEXPECTEDLY(hr)) + return hr; + hr = IUnknown_GetWindow(m_pTrayPriv, &m_hwndTray); + if (FAILED_UNEXPECTEDLY(hr)) + return hr; + hr = m_pTrayPriv->AppendMenuW(&hmenu); -#ifndef TEST_TRACKPOPUPMENU_SUBMENUS + if (FAILED_UNEXPECTEDLY(hr)) + return hr; + hr = m_pShellMenu->SetMenu(hmenu, NULL, SMSET_BOTTOM); -#else - hr = m_pShellMenu->SetMenu(hmenu, m_hwndTray, SMSET_BOTTOM); -#endif + if (FAILED_UNEXPECTEDLY(hr)) + return hr; return hr; } diff --git a/dll/shellext/stobject/csystray.cpp b/dll/shellext/stobject/csystray.cpp index ac7ae7e8775..f7a18688fe9 100644 --- a/dll/shellext/stobject/csystray.cpp +++ b/dll/shellext/stobject/csystray.cpp @@ -194,6 +194,7 @@ BOOL CSysTray::ProcessWindowMessage(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM UpdateIcons(); return TRUE; case WM_DESTROY: + KillTimer(1); ShutdownIcons(); return TRUE; } diff --git a/dll/win32/shell32/desktop.cpp b/dll/win32/shell32/desktop.cpp index 51dbfa8d1fa..b27168b1fe7 100644 --- a/dll/win32/shell32/desktop.cpp +++ b/dll/win32/shell32/desktop.cpp @@ -26,10 +26,8 @@ BOOL WINAPI SetShellWindowEx(HWND, HWND); #define SHDESK_TAG 0x4b534544 -static const WCHAR szProgmanClassName[] = {'P','r','o','g','m','a','n'}; -static const WCHAR szProgmanWindowName[] = { - 'P','r','o','g','r','a','m',' ','M','a','n','a','g','e','r' -}; +static const WCHAR szProgmanClassName [] = L"Progman"; +static const WCHAR szProgmanWindowName [] = L"Program Manager"; class CDesktopBrowser : public CComObjectRootEx, @@ -543,7 +541,7 @@ HANDLE WINAPI SHCreateDesktop(IShellDesktopTray *ShellDesk) rcDesk.bottom = GetSystemMetrics(SM_CYSCREEN); } - hWndDesk = CreateWindowExW(0, szProgmanClassName, szProgmanWindowName, + hWndDesk = CreateWindowExW(WS_EX_TOOLWINDOW, szProgmanClassName, szProgmanWindowName, WS_POPUP | WS_VISIBLE | WS_CLIPSIBLINGS | WS_CLIPCHILDREN, rcDesk.left, rcDesk.top, rcDesk.right, rcDesk.bottom, NULL, NULL, shell32_hInstance, (LPVOID)ShellDesk); diff --git a/include/reactos/undocshell.h b/include/reactos/undocshell.h index 942ca8b99c3..da8b18b1889 100644 --- a/include/reactos/undocshell.h +++ b/include/reactos/undocshell.h @@ -823,6 +823,29 @@ HRESULT inline ShellObjectCreatorInit(REFIID riid, void ** ppv) return S_OK; } +template +HRESULT inline ShellObjectCreatorInit(T1 initArg1, REFIID riid, void ** ppv) +{ + CComPtr obj; + HRESULT hResult; + + if (ppv == NULL) + return E_POINTER; + *ppv = NULL; + ATLTRY(obj = new _CComObject); + if (obj.p == NULL) + return E_OUTOFMEMORY; + hResult = obj->QueryInterface(riid, ppv); + if (FAILED(hResult)) + return hResult; + + hResult = obj->Initialize(initArg1); + if (FAILED(hResult)) + return hResult; + + return S_OK; +} + template HRESULT inline ShellObjectCreatorInit(T1 initArg1, REFIID riid, R ** ppv) { @@ -926,6 +949,32 @@ HRESULT inline ShellObjectCreatorInit(T1 initArg1, T2 initArg2, T3 initArg3, T4 return S_OK; } + +template +HRESULT inline ShellObjectCreatorInit(T1 initArg1, T2 initArg2, T3 initArg3, T4 initArg4, T5 initArg5, REFIID riid, R ** ppv) +{ + CComPtr obj; + CComPtr result; + HRESULT hResult; + + if (ppv == NULL) + return E_POINTER; + *ppv = NULL; + ATLTRY(obj = new _CComObject); + if (obj.p == NULL) + return E_OUTOFMEMORY; + hResult = obj->QueryInterface(riid, reinterpret_cast(&result)); + if (FAILED(hResult)) + return hResult; + + hResult = obj->Initialize(initArg1, initArg2, initArg3, initArg4, initArg5); + if (FAILED(hResult)) + return hResult; + + *ppv = result.Detach(); + + return S_OK; +} #endif /* __cplusplus */ #endif /* __WINE_UNDOCSHELL_H */ diff --git a/lib/atl/atlwin.h b/lib/atl/atlwin.h index 0031c58a65d..7cfc38dbac3 100644 --- a/lib/atl/atlwin.h +++ b/lib/atl/atlwin.h @@ -696,6 +696,10 @@ public: \ { \ case 0: +#define ALT_MSG_MAP(map) \ + break; \ + case map: + #define END_MSG_MAP() \ break; \ default: \