123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128 |
- // 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];
- }
- m_ImageArray.RemoveAll();
- }
- void CSkinTabCtrl::ClearMemory()
- {
- int nCount = m_ImageArray.GetSize();
- if ( nCount == -1 ) return;
- for (int i(0); i<nCount; i++ ) {
- delete (CEnBitmap*)m_ImageArray[i];
- }
- m_ImageArray.RemoveAll();
- }
- 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_HANDCUR ));
- 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_HANDCUR ));
- CStatic::OnMouseMove(nFlags, point);
- }
- void CSkinTabCtrl::OnLButtonUp(UINT nFlags, CPoint point)
- {
- if (point.y<44*4)
- ::SetCursor(AfxGetApp()->LoadCursor(IDC_HANDCUR ));
-
- CStatic::OnLButtonUp(nFlags, point);
- }
- // 这个函数暂时不用,这个removeall也是没有删除内存的。
- void CSkinTabCtrl::Clear()
- {
- // for (int i=0;i<m_ImageArray.GetCount();i++ ) {
- // //delete m_ptButton.GetAt(m_ptButton.FindIndex(i));
- // CEnBitmap *pBmp = (CEnBitmap*)m_ImageArray.GetAt(i);
- // //pBmp->DestroyWindow();
- // delete pBmp;
- // pBmp = NULL;
- // }
- m_ImageArray.RemoveAll();
- }
|