OSDN Git Service

MDITabBar: Make tab bar flat
authorsdottaka <sdottaka@users.sourceforge.net>
Sat, 25 Apr 2015 13:47:15 +0000 (22:47 +0900)
committersdottaka <sdottaka@users.sourceforge.net>
Sat, 25 Apr 2015 13:47:15 +0000 (22:47 +0900)
--HG--
branch : stable

Src/Common/MDITabBar.cpp
Src/Common/MDITabBar.h

index abcea2c..c4c0d4b 100644 (file)
@@ -23,6 +23,7 @@ BEGIN_MESSAGE_MAP(CMDITabBar, CControlBar)
        ON_WM_MBUTTONDOWN()
        ON_WM_CONTEXTMENU()
        ON_WM_PAINT()
+       ON_WM_ERASEBKGND()
        ON_NOTIFY_REFLECT_EX(TCN_SELCHANGE, OnSelchange)
        ON_WM_DRAWITEM_REFLECT()
        ON_WM_MOUSEMOVE()
@@ -75,7 +76,40 @@ CSize CMDITabBar::CalcFixedLayout(BOOL bStretch, BOOL bHorz)
 
 void CMDITabBar::OnPaint() 
 {
-       Default();
+       CPaintDC dc(this);
+       dc.SelectObject(GetFont());
+
+       DRAWITEMSTRUCT dis;
+       dis.hDC = dc.GetSafeHdc();\r
+
+       int nCurSel = GetCurSel();
+       for (int i = GetItemCount() - 1; i >= 0; --i)
+       {
+               GetItemRect(i, &dis.rcItem);
+               dis.itemID = i;
+               if (i != nCurSel)
+               {
+                       dis.itemState = 0;
+                       dis.rcItem.bottom -= 2;
+               }
+               else
+               {
+                       dis.itemState = ODS_SELECTED;
+                       dis.rcItem.bottom += 2;
+                       dis.rcItem.top -= 2;
+               }
+               DrawItem(&dis);
+               dc.FillSolidRect(CRect(dis.rcItem.right - 1, dis.rcItem.top, dis.rcItem.right, dis.rcItem.bottom + 2),
+                       GetSysColor(COLOR_3DLIGHT));
+       }
+}
+
+BOOL CMDITabBar::OnEraseBkgnd(CDC* pDC)
+{
+       CRect rClient;
+       GetClientRect(rClient);
+       pDC->FillSolidRect(rClient, GetSysColor(COLOR_3DFACE));
+       return TRUE;
 }
 
 /** 
index 53e87a2..45dbde8 100644 (file)
@@ -58,6 +58,7 @@ public:
 protected:
        //{{AFX_MSG(CMDITabBar)
        afx_msg void OnPaint();
+       afx_msg BOOL OnEraseBkgnd(CDC *pDC);
        afx_msg BOOL OnSelchange(NMHDR* pNMHDR, LRESULT* pResult);
        afx_msg void OnContextMenu(CWnd* pWnd, CPoint point);
        afx_msg void OnMButtonDown(UINT nFlags, CPoint point);