[SHELL32] -CMenuDeskBar: Handle WM_NCPAINT and paint the border with the correct...
authorGiannis Adamopoulos <gadamopoulos@reactos.org>
Fri, 5 May 2017 09:01:15 +0000 (09:01 +0000)
committerGiannis Adamopoulos <gadamopoulos@reactos.org>
Fri, 5 May 2017 09:01:15 +0000 (09:01 +0000)
svn path=/trunk/; revision=74479

reactos/dll/win32/shell32/shellmenu/CMenuDeskBar.cpp
reactos/dll/win32/shell32/shellmenu/CMenuDeskBar.h

index 95fad3c..1995343 100644 (file)
@@ -817,6 +817,28 @@ LRESULT CMenuDeskBar::_OnWinIniChange(UINT uMsg, WPARAM wParam, LPARAM lParam, B
     return 0;
 }
 
+LRESULT CMenuDeskBar::_OnNcPaint(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
+{
+    /* If it is a flat style menu we need to handle WM_NCPAINT 
+     * and paint the border with the right colour */
+    if ((GetStyle() & WS_BORDER) == 0)
+    {
+        /* This isn't a flat style menu. */
+        bHandled = FALSE;
+        return 0;
+    }
+
+    HDC hdc;
+    RECT rcWindow;
+
+    hdc = GetWindowDC();
+    GetWindowRect(&rcWindow);
+    OffsetRect(&rcWindow, -rcWindow.left, -rcWindow.top);
+    FrameRect(hdc, &rcWindow, GetSysColorBrush(COLOR_BTNSHADOW));
+    ReleaseDC(hdc);
+    return 0;
+}
+
 HRESULT CMenuDeskBar::_AdjustForTheme(BOOL bFlatStyle)
 {
     DWORD style = bFlatStyle ? WS_BORDER : WS_CLIPCHILDREN|WS_DLGFRAME;
index 654809f..544e715 100644 (file)
@@ -73,6 +73,7 @@ public:
         MESSAGE_HANDLER(WM_ACTIVATEAPP, _OnAppActivate)
         MESSAGE_HANDLER(WM_MOUSEACTIVATE, _OnMouseActivate)
         MESSAGE_HANDLER(WM_WININICHANGE , _OnWinIniChange)
+        MESSAGE_HANDLER(WM_NCPAINT, _OnNcPaint)
     END_MSG_MAP()
 
     BEGIN_COM_MAP(CMenuDeskBar)
@@ -140,6 +141,7 @@ private:
     LRESULT _OnMouseActivate(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled);
     LRESULT _OnAppActivate(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled);
     LRESULT _OnWinIniChange(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled);
+    LRESULT _OnNcPaint(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled);
 
     HRESULT _AdjustForTheme(BOOL bFlatStyle);
     BOOL _IsSubMenuParent(HWND hwnd);