123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114 |
- // SkinStatusBar.cpp : implementation file
- //
- #include "stdafx.h"
- //#include "dialog.h"
- #include "SkinStatusBar.h"
- #ifdef _DEBUG
- #define new DEBUG_NEW
- #undef THIS_FILE
- static char THIS_FILE[] = __FILE__;
- #endif
- /////////////////////////////////////////////////////////////////////////////
- // CSkinStatusBar
- CSkinStatusBar::CSkinStatusBar()
- {
- }
- CSkinStatusBar::~CSkinStatusBar()
- {
- ClearMemory();
- }
- /************************************************************************/
- /*
- 函数:清除栈;
- */
- /************************************************************************/
- void CSkinStatusBar::ClearMemory()
- {
- int nCount = m_ptButton.GetCount();
- if( nCount == -1 ) return;
- for (int i(0); i<nCount; i++ ) {
- CSkinButton *pBtn=(CSkinButton *)m_ptButton.GetAt(m_ptButton.FindIndex(i));
- pBtn->DestroyWindow();
- delete pBtn;
- }
- m_ptButton.RemoveAll();
- }
- BEGIN_MESSAGE_MAP(CSkinStatusBar, CSkinStatic)
- //{{AFX_MSG_MAP(CSkinStatusBar)
- ON_WM_SIZE()
- //}}AFX_MSG_MAP
- END_MESSAGE_MAP()
- /////////////////////////////////////////////////////////////////////////////
- // CSkinStatusBar message handlers
- BOOL CSkinStatusBar::LoadBKImage(LPCTSTR szImagePath)
- {
- return m_bmpBK.LoadImage(szImagePath);
- }
- BOOL CSkinStatusBar::LoadSBImage(LPCTSTR szImagePath)
- {
- // 加载前,先清除原有的按钮 [7/22/2013 Zero.t]
- m_bmpStatusBar.LoadImage(szImagePath);
- for (int j=0;j<m_ptButton.GetCount();j++ ){
- CRect rcButton;
- CSkinButton *pBtn=(CSkinButton *)m_ptButton.GetAt(m_ptButton.FindIndex(j));
- pBtn->DestroyWindow();
- delete pBtn;
- }
- m_ptButton.RemoveAll();
- // 删除了原来的,加载新的 [7/22/2013 Zero.t]
- CRect rcClient;
- GetClientRect(&rcClient);
- int cx=rcClient.Width();
- for (int i=0;i<3;i++) {
- CRect rcButton;
- rcButton.right =rcClient.right+21*(3-i);
- rcButton.left =rcButton.right-21 ;
- rcButton.top=0;
- rcButton.bottom =30;
- CEnBitmap bmpButton;
- m_bmpStatusBar.DrawImage(bmpButton,1,i+1,1,3);
- UINT nId=m_ltCommands.GetAt(m_ltCommands.FindIndex(i));
- CSkinButton *pBtn=new CSkinButton(); // 内存泄漏 [7/22/2013 Zero.t]
- pBtn->Create("",WS_CHILD|WS_VISIBLE|BS_PUSHBUTTON,rcButton,this,nId);
- pBtn->SetBitmap((HBITMAP)bmpButton.m_hObject );
- m_ptButton.AddTail(pBtn);
- }
- for (int i=0;i<m_ptButton.GetCount();i++ ) {
- CRect rcButton;
- CSkinButton *pBtn=(CSkinButton *)m_ptButton.GetAt(m_ptButton.FindIndex(i));
- pBtn->SetWindowPos(NULL, cx-(4-i)*21 ,3,21 ,20 ,SWP_NOZORDER );
- }
- return TRUE;
- }
- void CSkinStatusBar::SetBasicCommands(CList<UINT,UINT> <Conmmand)
- {
- m_ltCommands.RemoveAll ();
- m_ltCommands.AddTail (<Conmmand);
- }
- void CSkinStatusBar::OnSize(UINT nType, int cx, int cy)
- {
- CStatic::OnSize(nType, cx, cy);
-
- for (int i=0;i<m_ptButton.GetCount();i++ ) {
- CRect rcButton;
- CSkinButton *pBtn=(CSkinButton *)m_ptButton.GetAt(m_ptButton.FindIndex(i));
- pBtn->SetWindowPos(NULL, cx-(4-i)*21 ,3,21 ,20 ,SWP_NOZORDER );
- }
- }
|