📄 exttabctrl.cpp
字号:
// ExtTabCtrl.cpp : implementation file
//
#include "stdafx.h"
#include "SellMan.h"
#include "ExtTabCtrl.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CExtTabCtrl
CExtTabCtrl::CExtTabCtrl()
{
}
CExtTabCtrl::~CExtTabCtrl()
{
}
BEGIN_MESSAGE_MAP(CExtTabCtrl, CTabCtrl)
//{{AFX_MSG_MAP(CExtTabCtrl)
ON_WM_PAINT()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CExtTabCtrl message handlers
void CExtTabCtrl::DrawItem( LPDRAWITEMSTRUCT lpDrawItemStruct )
{
}
BOOL CExtTabCtrl::PreCreateWindow(CREATESTRUCT& cs)
{
cs.style = TCS_OWNERDRAWFIXED;
return CTabCtrl::PreCreateWindow(cs);
}
void CExtTabCtrl::PreSubclassWindow()
{
ModifyStyle( 0,TCS_OWNERDRAWFIXED );
CTabCtrl::PreSubclassWindow();
}
void CExtTabCtrl::OnPaint()
{
CPaintDC dc(this); // device context for painting
CRect rcClient,rcItem;
GetClientRect( &rcClient );
GetItemRect( 0,rcItem );
rcClient.top = rcItem.bottom;
rcItem.left = rcClient.left;
rcItem.right = rcClient.right;
dc.FillSolidRect( &rcItem, RGB( 250,245,240 ) );
dc.Draw3dRect( &rcClient, RGB( 255,255,255 ), RGB( 92,92,92 ) );
int obk;
TCITEM item;
CString str;
CFont *pFont, font;
CPen *pOpn,pen;
LOGFONT logFont;
IMAGEINFO ii;
CImageList *pImageList = GetImageList();
item.mask = TCIF_TEXT | TCIF_IMAGE;
item.cchTextMax = 256;
item.pszText = str.GetBuffer( 256 );
pen.CreatePen( PS_SOLID, 1, RGB( 152,152,152 ) );
pOpn = dc.SelectObject( &pen );
obk = dc.SetBkMode( 0 );
pFont = dc.SelectObject( GetFont() );
int nCount = GetItemCount();
int nCurSel = GetCurSel();
for( int i = 0; i < nCount; i ++ )
{
GetItem( i, &item );
GetItemRect( i, &rcItem );
if( i == 0 ) rcItem.left -= 2;
if( i != nCurSel ) rcItem.top ++;
else rcItem.bottom ++;
rcItem.right --;
if( i == nCurSel )
{
dc.FillSolidRect( &rcItem,GetSysColor( COLOR_3DFACE ) );
dc.Draw3dRect( &rcItem, RGB( 255,255,255 ), GetSysColor( COLOR_3DFACE ) );
dc.SetTextColor( RGB( 0,0,92 ) );
rcItem.top --;
GetFont()->GetLogFont( &logFont );
logFont.lfWeight = FW_BOLD;
font.CreateFontIndirect( &logFont );
CFont *poldfont = dc.SelectObject( &font );
if( pImageList != NULL )
{
pImageList->Draw( &dc, item.iImage, CPoint( rcItem.left + 2, rcItem.top + 2 ), ILD_NORMAL );
pImageList->GetImageInfo( item.iImage, &ii );
rcItem.left += ii.rcImage.right + 2;
dc.DrawText( item.pszText, rcItem, DT_LEFT | DT_SINGLELINE | DT_VCENTER );
}
else dc.DrawText( item.pszText, rcItem, DT_CENTER | DT_SINGLELINE | DT_VCENTER );
dc.SelectObject( poldfont );
}
else
{
dc.SetTextColor( RGB( 0,0,0 ) );
if( pImageList != NULL )
{
pImageList->Draw( &dc, item.iImage, CPoint( rcItem.left + 1, rcItem.top + 1 ), ILD_NORMAL );
pImageList->GetImageInfo( item.iImage, &ii );
rcItem.left += ii.rcImage.right + 2;
dc.DrawText( item.pszText, rcItem, DT_LEFT | DT_SINGLELINE | DT_VCENTER );
}
else dc.DrawText( item.pszText, rcItem, DT_CENTER | DT_SINGLELINE | DT_VCENTER );
}
dc.MoveTo( rcItem.right, rcItem.top );
dc.LineTo( rcItem.right, rcItem.bottom );
}
dc.SelectObject( pOpn );
dc.SetBkMode( obk );
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -