#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;
|
}
|