Author: dquintana
Date: Sun Feb 16 12:48:09 2014
New Revision: 62212

URL: http://svn.reactos.org/svn/reactos?rev=62212&view=rev
Log:
[RSHELL]
* CMenuSite: Improve code style.

Modified:
    branches/shell-experiments/base/shell/rshell/CMenuSite.cpp

Modified: branches/shell-experiments/base/shell/rshell/CMenuSite.cpp
URL: 
http://svn.reactos.org/svn/reactos/branches/shell-experiments/base/shell/rshell/CMenuSite.cpp?rev=62212&r1=62211&r2=62212&view=diff
==============================================================================
--- branches/shell-experiments/base/shell/rshell/CMenuSite.cpp  [iso-8859-1] 
(original)
+++ branches/shell-experiments/base/shell/rshell/CMenuSite.cpp  [iso-8859-1] 
Sun Feb 16 12:48:09 2014
@@ -48,11 +48,11 @@
     public IWinEventHandler,
     public IServiceProvider
 {
-    IUnknown *          m_DeskBarSite;
-    IUnknown *          m_BandObject;
-    IDeskBand *         m_DeskBand;
-    IWinEventHandler *  m_WinEventHandler;
-    HWND                m_hWndBand;
+    CComPtr<IUnknown>         m_DeskBarSite;
+    CComPtr<IUnknown>         m_BandObject;
+    CComPtr<IDeskBand>        m_DeskBand;
+    CComPtr<IWinEventHandler> m_WinEventHandler;
+    HWND                      m_hWndBand;
 
 public:
     CMenuSite();
@@ -119,7 +119,7 @@
     virtual HRESULT STDMETHODCALLTYPE SetModeDBC(DWORD dwMode);
 
 private:
-    BOOL CreateSiteWindow(HWND hWndParent);
+    IUnknown * ToIUnknown() { return (IDeskBarClient*)this; }
 };
 
 extern "C"
@@ -201,26 +201,11 @@
 
     IUnknown_SetSite(m_BandObject, NULL);
 
-    if (m_BandObject)
-    {
-        m_BandObject->Release();
-        m_BandObject = NULL;
-    }
-
-    if (m_DeskBand)
-    {
-        m_DeskBand->Release();
-        m_DeskBand = NULL;
-    }
-
-    if (m_WinEventHandler)
-    {
-        m_WinEventHandler->Release();
-        m_WinEventHandler = NULL;
-    }
-
     BOOL result = m_hWndBand != NULL;
 
+    m_BandObject = NULL;
+    m_DeskBand = NULL;
+    m_WinEventHandler = NULL;
     m_hWndBand = NULL;
 
     if (!punk)
@@ -229,7 +214,7 @@
     DBGASSERT(SUCCEEDED(punk->QueryInterface(IID_PPV_ARG(IDeskBand, 
&m_DeskBand))));
     DBGASSERT(SUCCEEDED(punk->QueryInterface(IID_PPV_ARG(IWinEventHandler, 
&m_WinEventHandler))));
 
-    IUnknown_SetSite(punk, (IDeskBarClient*)this);
+    IUnknown_SetSite(punk, this->ToIUnknown());
     IUnknown_GetWindow(punk, &m_hWndBand);
 
     m_BandObject = punk;
@@ -363,153 +348,101 @@
 
 HRESULT STDMETHODCALLTYPE CMenuSite::SetDeskBarSite(IUnknown *punkSite)
 {
-    HWND hWndSite;
-
-    ((IDeskBarClient*)this)->AddRef();
+    HRESULT hr;
+
+    CComPtr<IUnknown> protectThis(this->ToIUnknown());
 
     if (punkSite)
     {
-        if (m_DeskBarSite)
+        HWND hWndSite;
+
+        m_DeskBarSite = NULL;
+
+        hr = IUnknown_GetWindow(punkSite, &hWndSite);
+
+        if (FAILED(hr) || !hWndSite)
+            return E_FAIL;
+
+        if (!m_hWnd)
         {
-            m_DeskBarSite->Release();
-            m_DeskBarSite = NULL;
+            Create(hWndSite, NULL, L"MenuSite");
         }
 
-        IUnknown_GetWindow(punkSite, &hWndSite);
-
-        if (hWndSite)
-        {
-            CreateSiteWindow(hWndSite);
-
-            m_DeskBarSite = punkSite;
-
-            punkSite->AddRef();
-        }
-    }
-    else
-    {
-        if (m_DeskBand)
-        {
-            m_DeskBand->CloseDW(0);
-        }
-
-        IUnknown_SetSite(m_BandObject, NULL);
-
-        if (m_BandObject)
-        {
-            m_BandObject->Release();
-            m_BandObject = NULL;
-        }
-
-        if (m_DeskBand)
-        {
-            m_DeskBand->Release();
-            m_DeskBand = NULL;
-        }
-
-        if (m_WinEventHandler)
-        {
-            m_WinEventHandler->Release();
-            m_WinEventHandler = NULL;
-        }
-
-        m_hWndBand = NULL;
-
-        if (m_hWnd)
-        {
-            DestroyWindow();
-            m_hWnd = NULL;
-        }
-
-        if (m_DeskBarSite)
-            m_DeskBarSite->Release();
-
-        m_DeskBarSite = NULL;
-    }
-
-    ((IDeskBarClient*)this)->Release();
-
-    if (!m_hWnd)
+        m_DeskBarSite = punkSite;
+
+        return S_OK;
+    }
+
+    if (m_DeskBand)
+    {
+        m_DeskBand->CloseDW(0);
+    }
+
+    IUnknown_SetSite(m_BandObject, NULL);
+
+    m_BandObject = NULL;
+    m_DeskBand = NULL;
+    m_WinEventHandler = NULL;
+    m_hWndBand = NULL;
+    m_hWnd = NULL;
+    m_DeskBarSite = NULL;
+
+    return S_OK;
+}
+
+HRESULT STDMETHODCALLTYPE CMenuSite::UIActivateDBC(DWORD dwState)
+{
+    if (!m_DeskBand)
+        return S_OK;
+
+    return m_DeskBand->ShowDW(dwState != 0);
+}
+
+HRESULT STDMETHODCALLTYPE CMenuSite::UIActivateIO(BOOL fActivate, LPMSG lpMsg)
+{
+    if (lpMsg)
         return E_FAIL;
 
-    return S_OK;
-}
-
-HRESULT STDMETHODCALLTYPE CMenuSite::UIActivateDBC(DWORD dwState)
-{
-    if (!DBGASSERT(m_DeskBand))
-        return S_OK;
-
-    return m_DeskBand->ShowDW(dwState != 0);
-}
-
-HRESULT STDMETHODCALLTYPE CMenuSite::UIActivateIO(BOOL fActivate, LPMSG lpMsg)
-{
-    if (lpMsg && DBGASSERT(IsBadWritePtr(lpMsg, sizeof(*lpMsg))))
-        return E_FAIL;
-
     return IUnknown_UIActivateIO(m_BandObject, fActivate, lpMsg);
 }
 
-BOOL CMenuSite::CreateSiteWindow(HWND hWndParent)
-{
-    if (m_hWnd)
-    {
-        return DBGASSERT(IsWindow());
-    }
-
-    Create(hWndParent, NULL, L"MenuSite");
-
-    return m_hWnd != NULL;
-}
-
 BOOL CMenuSite::ProcessWindowMessage(HWND hWnd, UINT uMsg, WPARAM wParam, 
LPARAM lParam, LRESULT &lResult, DWORD mapId)
 {
-    HWND hWndToCall;
-    IMenuPopup * pMenuPopup;
-
-    ((IDeskBarClient*)this)->AddRef();
+    HWND hWndTarget = NULL;
+    CComPtr<IUnknown> protectThis(this->ToIUnknown());
 
     switch (uMsg)
     {
     case WM_SIZE:
         if (m_BandObject)
         {
+            CComPtr<IMenuPopup> pMenuPopup;
             if (SUCCEEDED(m_BandObject->QueryInterface(IID_PPV_ARG(IMenuPopup, 
&pMenuPopup))))
             {
                 RECT Rect = { 0 };
                 GetClientRect(&Rect);
                 pMenuPopup->OnPosRectChangeDB(&Rect);
-                pMenuPopup->Release();
             }
         }
-        hWndToCall = hWnd;
+        hWndTarget = hWnd;
         lResult = 1;
         break;
     case WM_NOTIFY:
-        hWndToCall = *(HWND *) lParam;
+        hWndTarget = ((NMHDR *)lParam)->hwndFrom;
         break;
     case WM_COMMAND:
-        hWndToCall = (HWND) lParam;
+        hWndTarget = (HWND) lParam;
         break;
     default:
-        ((IDeskBarClient*)this)->Release();
         return FALSE;
     }
 
-    if (hWndToCall)
-    {
-        if (m_WinEventHandler)
-        {
-            if (m_WinEventHandler->IsWindowOwner(hWndToCall) == S_OK)
-            {
-                HRESULT hr = m_WinEventHandler->OnWinEvent(hWndToCall, uMsg, 
wParam, lParam, &lResult);
-                ((IDeskBarClient*)this)->Release();
-                return hr == S_OK;
-            }
-        }
-    }
-
-    ((IDeskBarClient*)this)->Release();
+    if (hWndTarget && m_WinEventHandler &&
+        m_WinEventHandler->IsWindowOwner(hWndTarget) == S_OK)
+    {
+        if (SUCCEEDED(m_WinEventHandler->OnWinEvent(hWndTarget, uMsg, wParam, 
lParam, &lResult)))
+            return TRUE;
+    }
+
     return FALSE;
 }


Reply via email to