#include "../stdafx.h" //#include "StdAfx.h" #include "akTabCtrl.h" CakTabCtrl::CakTabCtrl(void) { } CakTabCtrl::~CakTabCtrl(void) { } BEGIN_MESSAGE_MAP(CakTabCtrl, CTabCtrl) ON_WM_ERASEBKGND() ON_WM_PAINT() END_MESSAGE_MAP() void CakTabCtrl::OnPaint() { CPaintDC dc(this); { LOGFONT lf; CFont* pfont = GetFont(); pfont->GetLogFont(&lf); lf.lfEscapement = 2700; m_fntTabTitle.DeleteObject(); m_fntTabTitle.CreateFontIndirect(&lf); } dc.SelectObject(&m_fntTabTitle); CPen pen, pen_active; COLORREF color_off = RGB(140, 140, 140); COLORREF color_active = RGB(38,38,38); // pDC->SetBkColor(RGB(38,38,38)); CBrush brush_off, brush_active; brush_off.CreateSolidBrush(color_off); brush_active.CreateSolidBrush(color_active); pen.CreatePen(PS_SOLID, 1, RGB(200, 200, 200)); pen_active.CreatePen(PS_SOLID, 1, color_active); CRect rcitem; GetItemRect(0, &rcitem); CRect rc; GetClientRect(&rc); rc.right = rcitem.left; dc.FillSolidRect(&rc, GetSysColor(COLOR_3DFACE)); GetClientRect(&rc); rc.right = rcitem.left + 1; dc.SelectObject(&pen); dc.SelectObject(&brush_active); dc.Rectangle(&rc); dc.SetBkMode(TRANSPARENT); for(int i = 0; i < GetItemCount(); i++) { dc.SelectObject(&pen); if(i == GetCurSel()) { dc.SelectObject(&brush_active); dc.SetBkColor(color_active); dc.SetTextColor(RGB(255,255,255)); } else { dc.SelectObject(&brush_off); dc.SetBkColor(color_off); dc.SetTextColor(RGB(255,255,255)); } GetItemRect(i, &rcitem); rcitem.right++; dc.Rectangle(&rcitem); if(i == GetCurSel()) { dc.SelectObject(pen_active); dc.MoveTo(rcitem.left+1, rcitem.bottom - 1); dc.LineTo(rcitem.right, rcitem.bottom - 1); } TCITEM item = { 0 }; char buf[32]; item.pszText = buf; item.cchTextMax = 32; item.mask = TCIF_TEXT; GetItem(i, &item); //dc.DrawText(buf, &rcitem, DT_CENTER | DT_VCENTER | DT_SINGLELINE); dc.SetTextAlign(TA_BASELINE|TA_CENTER); dc.TextOut(rcitem.left+rcitem.Width()/2-2, rcitem.top+rcitem.Height()/2, buf); //rcitem.bottom+=100; } } BOOL CakTabCtrl::OnEraseBkgnd(CDC*) { return TRUE; }