Author: rharabien
Date: Tue Dec 20 22:30:55 2011
New Revision: 54722

URL: http://svn.reactos.org/svn/reactos?rev=54722&view=rev
Log:
[SHELL32]
- Fix broken code in drive.cpp. Spotted by r3ddr4g0n.
- General code improvements
- Don't try to create static open handler in registry when file properties are 
opened. Fixes two "Open" items in shortcuts context menu after opening 
properties window.
See issue #6746 for more details.

Modified:
    trunk/reactos/dll/win32/shell32/defcontextmenu.cpp
    trunk/reactos/dll/win32/shell32/drive.cpp
    trunk/reactos/dll/win32/shell32/fprop.cpp
    trunk/reactos/dll/win32/shell32/shelllink.cpp

Modified: trunk/reactos/dll/win32/shell32/defcontextmenu.cpp
URL: 
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/shell32/defcontextmenu.cpp?rev=54722&r1=54721&r2=54722&view=diff
==============================================================================
--- trunk/reactos/dll/win32/shell32/defcontextmenu.cpp [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/shell32/defcontextmenu.cpp [iso-8859-1] Tue Dec 20 
22:30:55 2011
@@ -40,19 +40,16 @@
     public IContextMenu2
 {
     private:
-        DEFCONTEXTMENU dcm;
-        IDataObject *pDataObj;
-        DWORD bGroupPolicyActive;
-        PDynamicShellEntry dhead; /* first dynamic shell extension entry */
-        UINT iIdSHEFirst; /* first used id */
-        UINT iIdSHELast; /* last used id */
-        PStaticShellEntry shead; /* first static shell extension entry */
-        UINT iIdSCMFirst; /* first static used id */
-        UINT iIdSCMLast; /* last static used id */
-    public:
-        CDefaultContextMenu();
-        ~CDefaultContextMenu();
-        HRESULT WINAPI Initialize(const DEFCONTEXTMENU *pdcm);
+        DEFCONTEXTMENU m_Dcm;
+        IDataObject *m_pDataObj;
+        DWORD m_bGroupPolicyActive;
+        PDynamicShellEntry m_pDynamicEntries; /* first dynamic shell extension 
entry */
+        UINT m_iIdSHEFirst; /* first used id */
+        UINT m_iIdSHELast; /* last used id */
+        PStaticShellEntry m_pStaticEntries; /* first static shell extension 
entry */
+        UINT m_iIdSCMFirst; /* first static used id */
+        UINT m_iIdSCMLast; /* last static used id */
+
         void AddStaticEntry(const WCHAR *szVerb, const WCHAR *szClass);
         void AddStaticEntryForKey(HKEY hKey, const WCHAR *szClass);
         void AddStaticEntryForFileClass(const WCHAR *szExt);
@@ -74,6 +71,11 @@
         HRESULT DoDynamicShellExtensions(LPCMINVOKECOMMANDINFO lpcmi);
         HRESULT DoStaticShellExtensions(LPCMINVOKECOMMANDINFO lpcmi);
 
+    public:
+        CDefaultContextMenu();
+        ~CDefaultContextMenu();
+        HRESULT WINAPI Initialize(const DEFCONTEXTMENU *pdcm);
+
         // IContextMenu
         virtual HRESULT WINAPI QueryContextMenu(HMENU hMenu, UINT indexMenu, 
UINT idCmdFirst, UINT idCmdLast, UINT uFlags);
         virtual HRESULT WINAPI InvokeCommand(LPCMINVOKECOMMANDINFO lpcmi);
@@ -90,15 +92,15 @@
 
 CDefaultContextMenu::CDefaultContextMenu()
 {
-    memset (&dcm, 0, sizeof(dcm));
-    pDataObj = NULL;
-    bGroupPolicyActive = 0;
-    dhead = NULL;
-    iIdSHEFirst = 0;
-    iIdSHELast = 0;
-    shead = NULL;
-    iIdSCMFirst = 0;
-    iIdSCMLast = 0;
+    memset (&m_Dcm, 0, sizeof(m_Dcm));
+    m_pDataObj = NULL;
+    m_bGroupPolicyActive = 0;
+    m_pDynamicEntries = NULL;
+    m_iIdSHEFirst = 0;
+    m_iIdSHELast = 0;
+    m_pStaticEntries = NULL;
+    m_iIdSCMFirst = 0;
+    m_iIdSCMLast = 0;
 }
 
 CDefaultContextMenu::~CDefaultContextMenu()
@@ -107,7 +109,7 @@
     PStaticShellEntry sEntry, sNext;
 
     /* free dynamic shell extension entries */
-    dEntry = dhead;
+    dEntry = m_pDynamicEntries;
     while (dEntry)
     {
         dNext = dEntry->Next;
@@ -116,7 +118,7 @@
         dEntry = dNext;
     }
     /* free static shell extension entries */
-    sEntry = shead;
+    sEntry = m_pStaticEntries;
     while (sEntry)
     {
         sNext = sEntry->Next;
@@ -129,12 +131,12 @@
 
 HRESULT WINAPI CDefaultContextMenu::Initialize(const DEFCONTEXTMENU *pdcm)
 {
-    IDataObject *newDataObj;
-
-    TRACE("cidl %u\n", dcm.cidl);
-    if (SUCCEEDED(SHCreateDataObject(pdcm->pidlFolder, pdcm->cidl, 
pdcm->apidl, NULL, IID_IDataObject, (void**)&newDataObj)))
-        pDataObj = newDataObj;
-    CopyMemory(&dcm, pdcm, sizeof(DEFCONTEXTMENU));
+    IDataObject *pDataObj;
+
+    TRACE("cidl %u\n", pdcm->cidl);
+    if (SUCCEEDED(SHCreateDataObject(pdcm->pidlFolder, pdcm->cidl, 
pdcm->apidl, NULL, IID_IDataObject, (void**)&pDataObj)))
+        m_pDataObj = pDataObj;
+    CopyMemory(&m_Dcm, pdcm, sizeof(DEFCONTEXTMENU));
     return S_OK;
 }
 
@@ -144,7 +146,7 @@
     PStaticShellEntry curEntry;
     PStaticShellEntry lastEntry = NULL;
 
-    curEntry = shead;
+    curEntry = m_pStaticEntries;
     while(curEntry)
     {
         if (!wcsicmp(curEntry->szVerb, szVerb))
@@ -173,33 +175,32 @@
     if (!wcsicmp(szVerb, L"open"))
     {
         /* open verb is always inserted in front */
-        curEntry->Next = shead;
-        shead = curEntry;
-        return;
-    }
-
-    if (lastEntry)
+        curEntry->Next = m_pStaticEntries;
+        m_pStaticEntries = curEntry;
+    }
+    else if (lastEntry)
         lastEntry->Next = curEntry;
     else
-        shead = curEntry;
+        m_pStaticEntries = curEntry;
 }
 
 void
-CDefaultContextMenu::AddStaticEntryForKey(HKEY hKey, const WCHAR * szClass)
+CDefaultContextMenu::AddStaticEntryForKey(HKEY hKey, const WCHAR *pwszClass)
 {
     LONG result;
     DWORD dwIndex;
-    WCHAR szName[40];
+    WCHAR wszName[40];
     DWORD dwSize;
+
+    TRACE("AddStaticEntryForKey %x %ls\n", hKey, pwszClass);
 
     dwIndex = 0;
     do
     {
-        szName[0] = 0;
-        dwSize = sizeof(szName) / sizeof(WCHAR);
-        result = RegEnumKeyExW(hKey, dwIndex, szName, &dwSize, NULL, NULL, 
NULL, NULL);
+        dwSize = sizeof(wszName) / sizeof(WCHAR);
+        result = RegEnumKeyExW(hKey, dwIndex, wszName, &dwSize, NULL, NULL, 
NULL, NULL);
         if (result == ERROR_SUCCESS)
-            AddStaticEntry(szName, szClass);
+            AddStaticEntry(wszName, pwszClass);
 
         dwIndex++;
     } while(result == ERROR_SUCCESS);
@@ -316,7 +317,7 @@
 BOOL
 CDefaultContextMenu::IsShellExtensionAlreadyLoaded(const CLSID * szClass)
 {
-    PDynamicShellEntry curEntry = dhead;
+    PDynamicShellEntry curEntry = m_pDynamicEntries;
 
     while(curEntry)
     {
@@ -361,7 +362,7 @@
             return hr;
         }
 
-        hr = shext->Initialize(NULL, pDataObj, hKey);
+        hr = shext->Initialize(NULL, m_pDataObj, hKey);
         shext->Release();
         if (hr != S_OK)
         {
@@ -384,9 +385,9 @@
     curEntry->CMenu = cmobj;
     memcpy(&curEntry->ClassID, pClass, sizeof(CLSID));
 
-    if (dhead)
-    {
-        PDynamicShellEntry pEntry = dhead;
+    if (m_pDynamicEntries)
+    {
+        PDynamicShellEntry pEntry = m_pDynamicEntries;
 
         while (pEntry->Next)
             pEntry = pEntry->Next;
@@ -394,7 +395,7 @@
         pEntry->Next = curEntry;
     }
     else
-        dhead = curEntry;
+        m_pDynamicEntries = curEntry;
 
     return hr;
 }
@@ -436,7 +437,7 @@
             }
             if (SUCCEEDED(hResult))
             {
-                if (bGroupPolicyActive)
+                if (m_bGroupPolicyActive)
                 {
                     if (RegGetValueW(HKEY_LOCAL_MACHINE,
                                      
L"Software\\Microsoft\\Windows\\CurrentVersion\\Shell Extensions\\Approved",
@@ -468,17 +469,17 @@
     PDynamicShellEntry curEntry;
     HRESULT hResult;
 
-    if (!dhead)
-    {
-        iIdSHEFirst = 0;
-        iIdSHELast = 0;
+    if (!m_pDynamicEntries)
+    {
+        m_iIdSHEFirst = 0;
+        m_iIdSHELast = 0;
         return indexMenu;
     }
 
-    curEntry = dhead;
+    curEntry = m_pDynamicEntries;
     idCmdFirst = 0x5000;
     idCmdLast =  0x6000;
-    iIdSHEFirst = idCmdFirst;
+    m_iIdSHEFirst = idCmdFirst;
     do
     {
         hResult = curEntry->CMenu->QueryContextMenu(hMenu, indexMenu++, 
idCmdFirst, idCmdLast, CMF_NORMAL);
@@ -493,8 +494,8 @@
         curEntry = curEntry->Next;
     } while(curEntry);
 
-    iIdSHELast = idCmdFirst;
-    TRACE("SH_LoadContextMenuHandlers first %x last %x\n", iIdSHEFirst, 
iIdSHELast);
+    m_iIdSHELast = idCmdFirst;
+    TRACE("SH_LoadContextMenuHandlers first %x last %x\n", m_iIdSHEFirst, 
m_iIdSHELast);
     return indexMenu;
 }
 
@@ -515,7 +516,7 @@
 
     TRACE("BuildBackgroundContextMenu entered\n");
 
-    if (!_ILIsDesktop(dcm.pidlFolder))
+    if (!_ILIsDesktop(m_Dcm.pidlFolder))
     {
         /* view option is only available in browsing mode */
         hSubMenu = LoadMenuA(shell32_hInstance, "MENU_001");
@@ -602,9 +603,9 @@
     mii.fState = MFS_ENABLED;
     mii.wID = 0x4000;
     mii.dwTypeData = NULL;
-    iIdSCMFirst = mii.wID;
-
-    curEntry = shead;
+    m_iIdSCMFirst = mii.wID;
+
+    curEntry = m_pStaticEntries;
 
     while(curEntry)
     {
@@ -666,7 +667,7 @@
         mii.wID++;
         curEntry = curEntry->Next;
     }
-    iIdSCMLast = mii.wID - 1;
+    m_iIdSCMLast = mii.wID - 1;
     return indexMenu;
 }
 
@@ -738,10 +739,10 @@
 
     TRACE("BuildShellItemContextMenu entered\n");
 
-    hr = dcm.psf->GetDisplayNameOf(dcm.apidl[0], SHGDN_FORPARSING, &strFile);
+    hr = m_Dcm.psf->GetDisplayNameOf(m_Dcm.apidl[0], SHGDN_FORPARSING, 
&strFile);
     if (hr == S_OK)
     {
-        hr = StrRetToBufW(&strFile, dcm.apidl[0], szPath, MAX_PATH);
+        hr = StrRetToBufW(&strFile, m_Dcm.apidl[0], szPath, MAX_PATH);
         if (hr == S_OK)
         {
             pOffset = wcsrchr(szPath, L'.');
@@ -780,7 +781,7 @@
     else
         ERR("GetDisplayNameOf failed: %x\n", hr);
 
-    guid = _ILGetGUIDPointer(dcm.apidl[0]);
+    guid = _ILGetGUIDPointer(m_Dcm.apidl[0]);
     if (guid)
     {
         LPOLESTR pwszCLSID;
@@ -802,7 +803,7 @@
         }
     }
 
-    if (_ILIsDrive(dcm.apidl[0]))
+    if (_ILIsDrive(m_Dcm.apidl[0]))
     {
         AddStaticEntryForFileClass(L"Drive");
         if (RegOpenKeyExW(HKEY_CLASSES_ROOT, L"Drive", 0, KEY_READ, &hKey) == 
ERROR_SUCCESS)
@@ -815,14 +816,14 @@
 
     /* add static actions */
     rfg = SFGAO_BROWSABLE | SFGAO_CANCOPY | SFGAO_CANLINK | SFGAO_CANMOVE | 
SFGAO_CANDELETE | SFGAO_CANRENAME | SFGAO_HASPROPSHEET | SFGAO_FILESYSTEM | 
SFGAO_FOLDER;
-    hr = dcm.psf->GetAttributesOf(dcm.cidl, dcm.apidl, &rfg);
+    hr = m_Dcm.psf->GetAttributesOf(m_Dcm.cidl, m_Dcm.apidl, &rfg);
     if (FAILED(hr))
     {
         ERR("GetAttributesOf failed: %x\n", hr);
         rfg = 0;
     }
 
-    if ((rfg & SFGAO_FOLDER) || _ILIsControlPanel(dcm.apidl[dcm.cidl]))
+    if ((rfg & SFGAO_FOLDER) || _ILIsControlPanel(m_Dcm.apidl[m_Dcm.cidl]))
     {
         /* add the default verbs open / explore */
         AddStaticEntryForFileClass(L"Folder");
@@ -855,7 +856,7 @@
     indexMenu = InsertMenuItemsOfDynamicContextMenuExtension(hMenu, indexMenu, 
iIdCmdFirst, iIdCmdLast);
     TRACE("indexMenu %d\n", indexMenu);
 
-    if (_ILIsDrive(dcm.apidl[0]))
+    if (_ILIsDrive(m_Dcm.apidl[0]))
     {
         /* The 'Format' option must be always available,
          * thus it is not registered as a static shell extension
@@ -924,7 +925,7 @@
     UINT idCmdLast,
     UINT uFlags)
 {
-    if (dcm.cidl)
+    if (m_Dcm.cidl)
     {
         idCmdFirst = BuildShellItemContextMenu(hmenu, idCmdFirst, idCmdLast, 
uFlags);
     }
@@ -1033,10 +1034,10 @@
         return E_FAIL;
     }
 
-    if (dcm.cidl)
+    if (m_Dcm.cidl)
     {
         psfDesktop->Release();
-        hr = dcm.psf->BindToObject(dcm.apidl[0], NULL, IID_IShellFolder, 
(LPVOID*)&psfTarget);
+        hr = m_Dcm.psf->BindToObject(m_Dcm.apidl[0], NULL, IID_IShellFolder, 
(LPVOID*)&psfTarget);
     }
     else
     {
@@ -1044,7 +1045,7 @@
         LPITEMIDLIST pidl;
 
         /* cidl is zero due to explorer view */
-        hr = dcm.psf->QueryInterface(IID_IPersistFolder2, (LPVOID *) &ppf2);
+        hr = m_Dcm.psf->QueryInterface(IID_IPersistFolder2, (LPVOID *) &ppf2);
         if (SUCCEEDED(hr))
         {
             hr = ppf2->GetCurFolder(&pidl);
@@ -1189,13 +1190,13 @@
     IPersistFile * ipf;
     static WCHAR szLnk[] = L"lnk";
 
-    if (dcm.psf->GetDisplayNameOf(dcm.apidl[0], SHGDN_FORPARSING, &strFile) != 
S_OK)
+    if (m_Dcm.psf->GetDisplayNameOf(m_Dcm.apidl[0], SHGDN_FORPARSING, 
&strFile) != S_OK)
     {
         ERR("IShellFolder_GetDisplayNameOf failed for apidl\n");
         return E_FAIL;
     }
 
-    if (StrRetToBufW(&strFile, dcm.apidl[0], szPath, MAX_PATH) != S_OK)
+    if (StrRetToBufW(&strFile, m_Dcm.apidl[0], szPath, MAX_PATH) != S_OK)
         return E_FAIL;
 
     pszExt = wcsrchr(szPath, L'.');
@@ -1205,7 +1206,7 @@
         if (!GetUniqueFileName(szPath, pszExt + 1, szTarget, TRUE))
             return E_FAIL;
 
-        hr = IShellLink_ConstructFromFile(NULL, IID_IPersistFile, 
dcm.apidl[0], (LPVOID*)&ipf);
+        hr = IShellLink_ConstructFromFile(NULL, IID_IPersistFile, 
m_Dcm.apidl[0], (LPVOID*)&ipf);
         if (hr != S_OK)
             return hr;
 
@@ -1255,14 +1256,14 @@
     HWND hwnd;
 
 
-    hr = dcm.psf->GetDisplayNameOf(dcm.apidl[0], SHGDN_FORPARSING, &strTemp);
+    hr = m_Dcm.psf->GetDisplayNameOf(m_Dcm.apidl[0], SHGDN_FORPARSING, 
&strTemp);
     if(hr != S_OK)
     {
         ERR("IShellFolder_GetDisplayNameOf failed with %x\n", hr);
         return hr;
     }
     ZeroMemory(szPath, sizeof(szPath));
-    hr = StrRetToBufW(&strTemp, dcm.apidl[0], szPath, MAX_PATH);
+    hr = StrRetToBufW(&strTemp, m_Dcm.apidl[0], szPath, MAX_PATH);
     if (hr != S_OK)
     {
         ERR("StrRetToBufW failed with %x\n", hr);
@@ -1276,7 +1277,7 @@
         *(wszPos + 1) = '\0';
     }
 
-    wszPath = BuildPathsList(szPath, dcm.cidl, dcm.apidl);
+    wszPath = BuildPathsList(szPath, m_Dcm.cidl, m_Dcm.apidl);
 
     ZeroMemory(&op, sizeof(op));
     op.hwnd = GetActiveWindow();
@@ -1321,7 +1322,7 @@
     LPDATAOBJECT pDataObj;
     HRESULT hr;
 
-    if (SUCCEEDED(SHCreateDataObject(dcm.pidlFolder, dcm.cidl, dcm.apidl, 
NULL, IID_IDataObject, (void**)&pDataObj)))
+    if (SUCCEEDED(SHCreateDataObject(m_Dcm.pidlFolder, m_Dcm.cidl, 
m_Dcm.apidl, NULL, IID_IDataObject, (void**)&pDataObj)))
     {
         hr = OleSetClipboard(pDataObj);
         pDataObj->Release();
@@ -1382,7 +1383,7 @@
 
         if(SUCCEEDED(lpSB->QueryActiveShellView(&lpSV)))
         {
-            lpSV->SelectItem(dcm.apidl[0],
+            lpSV->SelectItem(m_Dcm.apidl[0],
                              SVSI_DESELECTOTHERS | SVSI_EDIT | 
SVSI_ENSUREVISIBLE | SVSI_FOCUSED | SVSI_SELECT);
             lpSV->Release();
             return S_OK;
@@ -1398,23 +1399,23 @@
     WCHAR szDrive[MAX_PATH];
     STRRET strFile;
 
-    if (dcm.cidl && _ILIsMyComputer(dcm.apidl[0]))
+    if (m_Dcm.cidl && _ILIsMyComputer(m_Dcm.apidl[0]))
     {
         ShellExecuteW(lpcmi->hwnd, L"open", L"rundll32.exe 
shell32.dll,Control_RunDLL sysdm.cpl", NULL, NULL, SW_SHOWNORMAL);
         return S_OK;
     }
-    else if (dcm.cidl == 0 && dcm.pidlFolder != NULL && 
_ILIsDesktop(dcm.pidlFolder))
+    else if (m_Dcm.cidl == 0 && m_Dcm.pidlFolder != NULL && 
_ILIsDesktop(m_Dcm.pidlFolder))
     {
         ShellExecuteW(lpcmi->hwnd, L"open", L"rundll32.exe 
shell32.dll,Control_RunDLL desk.cpl", NULL, NULL, SW_SHOWNORMAL);
         return S_OK;
     }
-    else if (_ILIsDrive(dcm.apidl[0]))
-    {
-        ILGetDisplayName(dcm.apidl[0], szDrive);
-        SH_ShowDriveProperties(szDrive, dcm.pidlFolder, dcm.apidl);
+    else if (_ILIsDrive(m_Dcm.apidl[0]))
+    {
+        ILGetDisplayName(m_Dcm.apidl[0], szDrive);
+        SH_ShowDriveProperties(szDrive, m_Dcm.pidlFolder, m_Dcm.apidl);
         return S_OK;
     }
-    else if (_ILIsNetHood(dcm.apidl[0]))
+    else if (_ILIsNetHood(m_Dcm.apidl[0]))
     {
         //FIXME path!
         ShellExecuteW(NULL, L"open", L"explorer.exe",
@@ -1422,7 +1423,7 @@
                       NULL, SW_SHOWDEFAULT);
         return S_OK;
     }
-    else if (_ILIsBitBucket(dcm.apidl[0]))
+    else if (_ILIsBitBucket(m_Dcm.apidl[0]))
     {
         /* FIXME
          * detect the drive path of bitbucket if appropiate
@@ -1432,19 +1433,19 @@
         return S_OK;
     }
 
-    if (dcm.cidl > 1)
+    if (m_Dcm.cidl > 1)
         WARN("SHMultiFileProperties is not yet implemented\n");
 
-    if (dcm.psf->GetDisplayNameOf(dcm.apidl[0], SHGDN_FORPARSING, &strFile) != 
S_OK)
+    if (m_Dcm.psf->GetDisplayNameOf(m_Dcm.apidl[0], SHGDN_FORPARSING, 
&strFile) != S_OK)
     {
         ERR("IShellFolder_GetDisplayNameOf failed for apidl\n");
         return E_FAIL;
     }
 
-    if (StrRetToBufW(&strFile, dcm.apidl[0], szDrive, MAX_PATH) != S_OK)
+    if (StrRetToBufW(&strFile, m_Dcm.apidl[0], szDrive, MAX_PATH) != S_OK)
         return E_FAIL;
 
-    return SH_ShowPropertiesDialog(szDrive, dcm.pidlFolder, dcm.apidl);
+    return SH_ShowPropertiesDialog(szDrive, m_Dcm.pidlFolder, m_Dcm.apidl);
 }
 
 HRESULT
@@ -1453,7 +1454,7 @@
 {
     char sDrive[5] = {0};
 
-    if (!_ILGetDrive(dcm.apidl[0], sDrive, sizeof(sDrive)))
+    if (!_ILGetDrive(m_Dcm.apidl[0], sDrive, sizeof(sDrive)))
     {
         ERR("pidl is not a drive\n");
         return E_FAIL;
@@ -1468,9 +1469,9 @@
     LPCMINVOKECOMMANDINFO lpcmi)
 {
     UINT verb = LOWORD(lpcmi->lpVerb);
-    PDynamicShellEntry pCurrent = dhead;
-
-    TRACE("verb %p first %x last %x", lpcmi->lpVerb, iIdSHEFirst, iIdSHELast);
+    PDynamicShellEntry pCurrent = m_pDynamicEntries;
+
+    TRACE("verb %p first %x last %x", lpcmi->lpVerb, m_iIdSHEFirst, 
m_iIdSHELast);
 
     while(pCurrent && verb > pCurrent->iIdCmdFirst + pCurrent->NumIds)
         pCurrent = pCurrent->Next;
@@ -1497,8 +1498,8 @@
     WCHAR szPath[MAX_PATH];
     WCHAR szDir[MAX_PATH];
     SHELLEXECUTEINFOW sei;
-    PStaticShellEntry pCurrent = shead;
-    int verb = LOWORD(lpcmi->lpVerb) - iIdSCMFirst;
+    PStaticShellEntry pCurrent = m_pStaticEntries;
+    int verb = LOWORD(lpcmi->lpVerb) - m_iIdSCMFirst;
     HRESULT hr;
 
     while(pCurrent && verb-- > 0)
@@ -1507,14 +1508,14 @@
     if (verb > 0)
         return E_FAIL;
 
-    hr = dcm.psf->GetDisplayNameOf(dcm.apidl[0], SHGDN_FORPARSING, &strFile);
+    hr = m_Dcm.psf->GetDisplayNameOf(m_Dcm.apidl[0], SHGDN_FORPARSING, 
&strFile);
     if (hr != S_OK)
     {
         ERR("IShellFolder_GetDisplayNameOf failed for apidl\n");
         return hr;
     }
 
-    hr = StrRetToBufW(&strFile, dcm.apidl[0], szPath, MAX_PATH);
+    hr = StrRetToBufW(&strFile, m_Dcm.apidl[0], szPath, MAX_PATH);
     if (hr != S_OK)
         return hr;
 
@@ -1574,17 +1575,17 @@
             return DoFormat(lpcmi);
     }
 
-    if (iIdSHEFirst && iIdSHELast)
-    {
-        if (LOWORD(lpcmi->lpVerb) >= iIdSHEFirst && LOWORD(lpcmi->lpVerb) <= 
iIdSHELast)
+    if (m_iIdSHEFirst && m_iIdSHELast)
+    {
+        if (LOWORD(lpcmi->lpVerb) >= m_iIdSHEFirst && LOWORD(lpcmi->lpVerb) <= 
m_iIdSHELast)
         {
             return DoDynamicShellExtensions(lpcmi);
         }
     }
 
-    if (iIdSCMFirst && iIdSCMLast)
-    {
-        if (LOWORD(lpcmi->lpVerb) >= iIdSCMFirst && LOWORD(lpcmi->lpVerb) <= 
iIdSCMLast)
+    if (m_iIdSCMFirst && m_iIdSCMLast)
+    {
+        if (LOWORD(lpcmi->lpVerb) >= m_iIdSCMFirst && LOWORD(lpcmi->lpVerb) <= 
m_iIdSCMLast)
         {
             return DoStaticShellExtensions(lpcmi);
         }

Modified: trunk/reactos/dll/win32/shell32/drive.cpp
URL: 
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/shell32/drive.cpp?rev=54722&r1=54721&r2=54722&view=diff
==============================================================================
--- trunk/reactos/dll/win32/shell32/drive.cpp [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/shell32/drive.cpp [iso-8859-1] Tue Dec 20 22:30:55 
2011
@@ -107,23 +107,23 @@
 
 
 static VOID
-GetDriveNameWithLetter(LPWSTR szText, UINT cchTextMax, WCHAR Drive)
+GetDriveNameWithLetter(LPWSTR szText, UINT cchTextMax, WCHAR wchDrive)
 {
     WCHAR szDrive[] = L"C:\\";
     DWORD dwMaxComp, dwFileSys, cchText = 0;
 
-    szDrive[0] = Drive;
+    szDrive[0] = wchDrive;
     if (GetVolumeInformationW(szDrive, szText, cchTextMax, NULL, &dwMaxComp, 
&dwFileSys, NULL, 0))
     {
         cchText = wcslen(szText);
-        if (cchText == cchText)
+        if (cchText == 0)
         {
             /* load default volume label */
-            cchText = LoadStringW(shell32_hInstance, IDS_DRIVE_FIXED, 
&szText[cchTextMax+1], (sizeof(szText) / sizeof(WCHAR)) - cchTextMax - 2);
-        }
-    }
-
-    StringCchPrintfW(szText + cchText, cchTextMax - cchText, L" (%c)", Drive);
+            cchText = LoadStringW(shell32_hInstance, IDS_DRIVE_FIXED, szText, 
cchTextMax);
+        }
+    }
+
+    StringCchPrintfW(szText + cchText, cchTextMax - cchText, L" (%c)", 
wchDrive);
 }
 
 static VOID

Modified: trunk/reactos/dll/win32/shell32/fprop.cpp
URL: 
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/shell32/fprop.cpp?rev=54722&r1=54721&r2=54722&view=diff
==============================================================================
--- trunk/reactos/dll/win32/shell32/fprop.cpp [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/shell32/fprop.cpp [iso-8859-1] Tue Dec 20 22:30:55 
2011
@@ -32,38 +32,29 @@
 
 EXTERN_C HPSXA WINAPI SHCreatePropSheetExtArrayEx(HKEY hKey, LPCWSTR 
pszSubKey, UINT max_iface, IDataObject *pDataObj);
 
-static LONG SH_GetAssociatedApplication(WCHAR *fileext, WCHAR *wAssocApp)
-{
-    WCHAR wDataType[MAX_PATH] = {0};
-    HKEY hkey;
+static LONG SH_GetAssociatedApplication(WCHAR *pwszFileExt, WCHAR 
*pwszAssocApp)
+{
+    WCHAR wszBuf[MAX_PATH] = {0};
     LONG result;
-    DWORD dwLen = MAX_PATH * sizeof(WCHAR);
-
-    wAssocApp[0] = '\0';
-    RegCreateKeyExW(HKEY_CLASSES_ROOT, fileext, 0, NULL, 0, KEY_READ, NULL, 
&hkey, NULL);
-    result = RegQueryValueExW(hkey, L"", NULL, NULL, (LPBYTE)wDataType, 
&dwLen);
-    RegCloseKey(hkey);
-    
+    DWORD dwSize = sizeof(wszBuf);
+
+    result = RegGetValueW(HKEY_CLASSES_ROOT, pwszFileExt, L"", RRF_RT_REG_SZ, 
NULL, wszBuf, &dwSize);
+
     if (result == ERROR_SUCCESS)
     {
-        wcscat(wDataType, L"\\shell\\open\\command");
-        dwLen = MAX_PATH * sizeof(WCHAR);
-        RegCreateKeyExW(HKEY_CLASSES_ROOT, wDataType, 0, NULL, 0, KEY_READ, 
NULL, &hkey, NULL);
-        result = (RegQueryValueExW(hkey, NULL, NULL, NULL, (LPBYTE)wAssocApp, 
&dwLen));
-        RegCloseKey(hkey);
-        
-        if (result != ERROR_SUCCESS)
-        {
-            /* FIXME: Make it return full path instead of
-               notepad.exe "%1"
-               %systemroot%\notepad.exe "%1"
-               etc
-               Maybe there is code to do that somewhere? 
-               dll\win32\shell32\shlexec.c for example?
-            */
-            wAssocApp[0] = '\0';
-        }
-    }
+        StringCbCat(wszBuf, sizeof(wszBuf), L"\\shell\\open\\command");
+        dwSize = MAX_PATH * sizeof(WCHAR);
+        result = RegGetValueW(HKEY_CLASSES_ROOT, wszBuf, L"", RRF_RT_REG_SZ, 
NULL, pwszAssocApp, &dwSize);
+        /* FIXME: Make it return full path instead of
+           notepad.exe "%1"
+           %systemroot%\notepad.exe "%1"
+           etc
+           Maybe there is code to do that somewhere? 
+           dll\win32\shell32\shlexec.c for example? */
+    }
+
+    if (result != ERROR_SUCCESS)
+        pwszAssocApp[0] = '\0';
 
     return result;
 }

Modified: trunk/reactos/dll/win32/shell32/shelllink.cpp
URL: 
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/shell32/shelllink.cpp?rev=54722&r1=54721&r2=54722&view=diff
==============================================================================
--- trunk/reactos/dll/win32/shell32/shelllink.cpp [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/shell32/shelllink.cpp [iso-8859-1] Tue Dec 20 
22:30:55 2011
@@ -1810,36 +1810,34 @@
     return r;
 }
 
-HRESULT WINAPI CShellLink::QueryContextMenu(HMENU hmenu, UINT indexMenu, UINT 
idCmdFirst, UINT idCmdLast, UINT uFlags)
-{
-    WCHAR szOpen[20];
+HRESULT WINAPI CShellLink::QueryContextMenu(HMENU hMenu, UINT indexMenu, UINT 
idCmdFirst, UINT idCmdLast, UINT uFlags)
+{
+    WCHAR wszOpen[20];
     MENUITEMINFOW mii;
     int id = 1;
 
     TRACE("%p %p %u %u %u %u\n", this,
-          hmenu, indexMenu, idCmdFirst, idCmdLast, uFlags );
-
-    if ( !hmenu )
+          hMenu, indexMenu, idCmdFirst, idCmdLast, uFlags );
+
+    if (!hMenu)
         return E_INVALIDARG;
 
-    if (!LoadStringW(shell32_hInstance, IDS_OPEN_VERB, szOpen, 
sizeof(szOpen)/sizeof(WCHAR)))
-        szOpen[0] = L'\0';
-    else
-        szOpen[(sizeof(szOpen)/sizeof(WCHAR))-1] = L'\0';
+    if (!LoadStringW(shell32_hInstance, IDS_OPEN_VERB, wszOpen, 
sizeof(wszOpen)/sizeof(WCHAR)))
+        wszOpen[0] = L'\0';
 
     memset( &mii, 0, sizeof(mii) );
     mii.cbSize = sizeof (mii);
     mii.fMask = MIIM_TYPE | MIIM_ID | MIIM_STATE;
-    mii.dwTypeData = (LPWSTR)szOpen;
-    mii.cch = wcslen( mii.dwTypeData );
+    mii.dwTypeData = wszOpen;
+    mii.cch = wcslen(mii.dwTypeData);
     mii.wID = idCmdFirst + id++;
     mii.fState = MFS_DEFAULT | MFS_ENABLED;
     mii.fType = MFT_STRING;
-    if (!InsertMenuItemW( hmenu, indexMenu, TRUE, &mii ))
+    if (!InsertMenuItemW(hMenu, indexMenu, TRUE, &mii))
         return E_FAIL;
     iIdOpen = 1;
 
-    return MAKE_HRESULT( SEVERITY_SUCCESS, 0, id );
+    return MAKE_HRESULT(SEVERITY_SUCCESS, 0, id);
 }
 
 static LPWSTR


Reply via email to