[EXPLORER-NEW]
[reactos.git] / dll / win32 / shell32 / newmenu.cpp
index ba78bc3..db71220 100644 (file)
@@ -165,7 +165,7 @@ CNewMenu::SHELLNEW_ITEM *CNewMenu::LoadItem(LPCWSTR pwszExt)
         return NULL;
 
     /* Create new item */
-    SHELLNEW_ITEM *pNewItem = (SHELLNEW_ITEM *)HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(SHELLNEW_ITEM));
+    SHELLNEW_ITEM *pNewItem = static_cast<SHELLNEW_ITEM *>(HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(SHELLNEW_ITEM)));
     if (!pNewItem)
     {
         free(pData);
@@ -179,7 +179,10 @@ CNewMenu::SHELLNEW_ITEM *CNewMenu::LoadItem(LPCWSTR pwszExt)
     pNewItem->pwszExt = _wcsdup(pwszExt);
     pNewItem->pwszDesc = _wcsdup(fi.szTypeName);
     if (fi.hIcon)
+    {
         pNewItem->hBitmap = IconToBitmap(fi.hIcon);
+        DestroyIcon(fi.hIcon);
+    }
 
     return pNewItem;
 }
@@ -225,7 +228,7 @@ CNewMenu::LoadAllItems()
 
     if (!m_pLinkItem)
     {
-        m_pLinkItem = (SHELLNEW_ITEM *)HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(SHELLNEW_ITEM));
+        m_pLinkItem = static_cast<SHELLNEW_ITEM *>(HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(SHELLNEW_ITEM)));
         if (m_pLinkItem)
         {
             m_pLinkItem->Type = SHELLNEW_TYPE_NULLFILE;
@@ -350,15 +353,15 @@ HRESULT CNewMenu::CreateNewFolder(IShellView *psv)
     //    return E_FAIL;
 
     /* Get current folder */
-    hr = IUnknown_QueryService(psv, SID_IFolderView, IID_IFolderView, (void **)&pFolderView);
+    hr = IUnknown_QueryService(psv, SID_IFolderView, IID_PPV_ARG(IFolderView, &pFolderView));
     if (FAILED(hr))
         return hr;
 
-    hr = pFolderView->GetFolder(IID_IShellFolder, (void **)&pParentFolder);
+    hr = pFolderView->GetFolder(IID_PPV_ARG(IShellFolder, &pParentFolder));
     if (FAILED(hr))
         return hr;
 
-    hr = pParentFolder->QueryInterface(IID_ISFHelper, (LPVOID*)&psfhlp);
+    hr = pParentFolder->QueryInterface(IID_PPV_ARG(ISFHelper, &psfhlp));
     if (FAILED(hr))
         return hr;
 
@@ -394,19 +397,19 @@ HRESULT CNewMenu::CreateNewItem(SHELLNEW_ITEM *pItem, LPCMINVOKECOMMANDINFO lpcm
     WCHAR wszPath[MAX_PATH];
     CComPtr<IFolderView> pFolderView;
     CComPtr<IShellFolder> pParentFolder;
-    CComPtr<IPersistFolder3> psf;
+    CComPtr<IPersistFolder2> psf;
     HRESULT hr;
 
     /* Get current folder */
-    hr = IUnknown_QueryService(psv, SID_IFolderView, IID_IFolderView, (void **)&pFolderView);
+    hr = IUnknown_QueryService(psv, SID_IFolderView, IID_PPV_ARG(IFolderView, &pFolderView));
     if (FAILED(hr))
         return hr;
 
-    hr = pFolderView->GetFolder(IID_IShellFolder, (void **)&pParentFolder);
+    hr = pFolderView->GetFolder(IID_PPV_ARG(IShellFolder, &pParentFolder));
     if (FAILED(hr))
         return hr;
 
-    if (pParentFolder->QueryInterface(IID_IPersistFolder2, (LPVOID*)&psf) != S_OK)
+    if (pParentFolder->QueryInterface(IID_PPV_ARG(IPersistFolder2, &psf)) != S_OK)
     {
         ERR("Failed to get interface IID_IPersistFolder2\n");
         return E_FAIL;
@@ -544,12 +547,7 @@ HRESULT STDMETHODCALLTYPE CNewMenu::SetSite(IUnknown *pUnkSite)
 
 HRESULT STDMETHODCALLTYPE CNewMenu::GetSite(REFIID riid, void **ppvSite)
 {
-    if (ppvSite == NULL)
-        return E_POINTER;
-    *ppvSite = m_pSite;
-    if (m_pSite != NULL)
-        m_pSite->AddRef();
-    return S_OK;
+    return m_pSite->QueryInterface(riid, ppvSite);
 }
 
 HRESULT
@@ -596,8 +594,8 @@ HRESULT
 WINAPI
 CNewMenu::InvokeCommand(LPCMINVOKECOMMANDINFO lpici)
 {
-    IShellBrowser *lpSB = NULL;
-    CComPtr<IShellView> lpSV = NULL;
+    CComPtr<IShellBrowser> lpSB;
+    CComPtr<IShellView> lpSV;
     HRESULT hr = E_FAIL;
 
     /* Note: CWM_GETISHELLBROWSER returns shell browser without adding reference */