[RSHELL]
[reactos.git] / dll / win32 / shell32 / desktop.cpp
index 58b95e2..b27168b 100644 (file)
@@ -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<CComMultiThreadModelNoCS>,
@@ -45,7 +43,7 @@ private:
     HWND hWndDesktopListView;
     CComPtr<IShellDesktopTray>        ShellDesk;
     CComPtr<IShellView>                DesktopView;
-    IShellBrowser *DefaultShellBrowser;
+    CComPtr<IShellBrowser> DefaultShellBrowser;
     LPITEMIDLIST pidlDesktopDirectory;
     LPITEMIDLIST pidlDesktop;
 public:
@@ -159,7 +157,7 @@ HRESULT CDesktopBrowser::Initialize(HWND hWndx, IShellDesktopTray *ShellDeskx)
 
 static CDesktopBrowser *SHDESK_Create(HWND hWnd, LPCREATESTRUCT lpCreateStruct)
 {
-    IShellDesktopTray        *ShellDesk;
+    CComPtr<IShellDesktopTray>       ShellDesk;
     CComObject<CDesktopBrowser>        *pThis;
     HRESULT                    hRet;
 
@@ -261,8 +259,8 @@ HRESULT STDMETHODCALLTYPE CDesktopBrowser::TranslateAcceleratorSB(LPMSG lpmsg, W
 
 HRESULT STDMETHODCALLTYPE CDesktopBrowser::BrowseObject(LPCITEMIDLIST pidl, UINT wFlags)
 {
-    /* 
-     * We should use IShellWindows interface here in order to attempt to 
+    /*
+     * We should use IShellWindows interface here in order to attempt to
      * find an open shell window that shows the requested pidl and activate it
      */
 
@@ -389,8 +387,7 @@ LRESULT CALLBACK CDesktopBrowser::ProgmanWindowProc(IN HWND hwnd, IN UINT uMsg,
 
     if (uMsg != WM_NCCREATE)
     {
-        pThis = (CDesktopBrowser*)GetWindowLongPtrW(hwnd,
-                                          0);
+        pThis = reinterpret_cast<CDesktopBrowser *>(GetWindowLongPtrW(hwnd, 0));
         if (pThis == NULL)
             goto DefMsgHandler;
     }
@@ -423,6 +420,7 @@ LRESULT CALLBACK CDesktopBrowser::ProgmanWindowProc(IN HWND hwnd, IN UINT uMsg,
                     rcDesktop.bottom = GetSystemMetrics(SM_CYVIRTUALSCREEN);
 
                     /* FIXME: Update work area */
+                    DBG_UNREFERENCED_LOCAL_VARIABLE(rcDesktop);
                 }
                 break;
 
@@ -475,6 +473,11 @@ LRESULT CALLBACK CDesktopBrowser::ProgmanWindowProc(IN HWND hwnd, IN UINT uMsg,
                 break;
             }
 
+            case WM_EXPLORER_OPEN_NEW_WINDOW:
+                DbgPrint("Proxy Desktop message 1035 received.\n");
+                SHOnCWMCommandLine((HANDLE)lParam);
+                break;
+
             default:
 DefMsgHandler:
                 Ret = DefWindowProcW(hwnd, uMsg, wParam, lParam);
@@ -538,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);
@@ -554,7 +557,7 @@ HANDLE WINAPI SHCreateDesktop(IShellDesktopTray *ShellDesk)
  */
 BOOL WINAPI SHDesktopMessageLoop(HANDLE hDesktop)
 {
-    CDesktopBrowser *Desk = (CDesktopBrowser *)hDesktop;
+    CDesktopBrowser *Desk = static_cast<CDesktopBrowser *>(hDesktop);
 
     if (Desk == NULL || Desk->Tag != SHDESK_TAG)
     {