⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 exttabctrl.cpp

📁 我自己整理的一些VC源代码
💻 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 + -