📄 skintabctrl.cpp
字号:
// SkinTabCtrl.cpp : implementation file
//
#include "stdafx.h"
#include "dialog.h"
#include "SkinTabCtrl.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CSkinTabCtrl
CSkinTabCtrl::CSkinTabCtrl()
{
m_tabCurrent=0;
}
CSkinTabCtrl::~CSkinTabCtrl()
{
for (int i=0;i<m_ImageArray.GetSize();i++ )
{
delete m_ImageArray[i];
}
}
BEGIN_MESSAGE_MAP(CSkinTabCtrl, CStatic)
//{{AFX_MSG_MAP(CSkinTabCtrl)
ON_WM_ERASEBKGND()
ON_WM_PAINT()
ON_WM_LBUTTONDOWN()
ON_WM_MOUSEMOVE()
ON_WM_LBUTTONUP()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CSkinTabCtrl message handlers
void CSkinTabCtrl::LoadBitmap(LPCTSTR szImagePath)
{
m_bmpTabBk.LoadImage(szImagePath);
}
BOOL CSkinTabCtrl::OnEraseBkgnd(CDC* pDC)
{
// TODO: Add your message handler code here and/or call default
return TRUE;
}
void CSkinTabCtrl::OnPaint()
{
CPaintDC dc(this); // device context for painting
CEnBitmap bmpTabBk;
m_bmpTabBk.Draw( &dc, m_bmpTabBk.GetRect() );
CEnBitmap *pBmpTabActive;
pBmpTabActive=(CEnBitmap *)m_ImageArray[m_tabCurrent];
CRect rc(0,m_tabCurrent*pBmpTabActive->GetHeight(), pBmpTabActive->GetWidth(),(m_tabCurrent+1)*pBmpTabActive->GetHeight());
pBmpTabActive->StretchDraw(&dc,&rc,pBmpTabActive->GetRect() );
}
void CSkinTabCtrl::OnLButtonDown(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
CRect rc = m_bmpTabBk.GetRect();
if ( point.y<44*4)
{
m_tabCurrent=point.y/(m_bmpTabBk.GetHeight()/4 );
::SetCursor(AfxGetApp()->LoadCursor(IDC_HAND ));
Invalidate();
UpdateWindow();
}
CStatic::OnLButtonDown(nFlags, point);
}
void CSkinTabCtrl::AddTab(LPCTSTR szImagePath)
{
CEnBitmap *pBmp=new CEnBitmap();
pBmp->LoadImage(szImagePath);
m_ImageArray.Add(pBmp);
}
void CSkinTabCtrl::OnMouseMove(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
if (point.y<44*4)
::SetCursor(AfxGetApp()->LoadCursor(IDC_HAND ));
CStatic::OnMouseMove(nFlags, point);
}
void CSkinTabCtrl::OnLButtonUp(UINT nFlags, CPoint point)
{
if (point.y<44*4)
::SetCursor(AfxGetApp()->LoadCursor(IDC_HAND ));
CStatic::OnLButtonUp(nFlags, point);
}
void CSkinTabCtrl::Clear()
{
m_ImageArray.RemoveAll();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -