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

📄 skintoolbar.cpp

📁 If you are not using these features and wish to reduce the size
💻 CPP
字号:
// SkinToolBar.cpp : implementation file
//

#include "stdafx.h"
#include "dialog.h"
#include "SkinToolBar.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CSkinToolBar

CSkinToolBar::CSkinToolBar()
{
	m_bShow=TRUE;
}

CSkinToolBar::~CSkinToolBar()
{
	for (int i=0;i<m_ptButton.GetCount();i++ )
	{
		delete m_ptButton.GetAt(m_ptButton.FindIndex(i));
	}
}


BEGIN_MESSAGE_MAP(CSkinToolBar, CSkinStatic)
	//{{AFX_MSG_MAP(CSkinToolBar)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CSkinToolBar message handlers
BOOL CSkinToolBar::LoadTBImage(UINT uIDRes,COLORREF crBack)
{
	CBitmap bmp;
	if (m_bmpToolBar.m_hObject)
	{
		bmp.LoadBitmap(uIDRes);
		m_bmpToolBar.SetBitmap((HBITMAP)bmp.m_hObject ); 
		return TRUE;
	}
	else
		return m_bmpToolBar.LoadBitmap(uIDRes);
}

void CSkinToolBar::SetSizes( SIZE sizeButton, SIZE sizeImage )
{
	int nButtonCount=m_bmpToolBar.GetWidth()/sizeImage.cx ;

	m_rcButton.RemoveAll(); 
	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(); 
	for (int i=0;i<nButtonCount;i++)
	{
		CRect rcButton;
		rcButton.left =30+ i*sizeButton.cx ;
		rcButton.right =rcButton.left+sizeButton.cx;
		rcButton.top=2;
		rcButton.bottom =sizeButton.cy+2;
		CEnBitmap bmpButton;
		m_bmpToolBar.DrawImage(bmpButton,i+1,1,nButtonCount,1); 

		UINT nId=m_ltCommands.GetAt(m_ltCommands.FindIndex(i)); 
		CSkinButton *pBtn=new CSkinButton();
		pBtn->Create("",WS_CHILD|WS_VISIBLE|BS_PUSHBUTTON|BS_NOTIFY,rcButton,this,nId); 
		pBtn->SetBitmap((HBITMAP)bmpButton.m_hObject );  
		pBtn->SetStyle(STYLE_TOOLBAR);
		pBtn->SetTextColor(m_crText); 
		m_rcButton.Add(rcButton);
		m_ptButton.AddTail(pBtn); 
	}
	RecalcLayout();
}



void CSkinToolBar::RecalcLayout()
{
	CPaintDC dc(this);
	CSkinButton *pBtn;
	CRect rc(0,0,30,0);
	for (int i=0;i<m_ptButton.GetCount();i++ )
	{
		pBtn=(CSkinButton *)m_ptButton.GetAt(m_ptButton.FindIndex(i));
		CString strText;
		CRect &rcButton=m_rcButton.GetAt(i) ; 
		UINT nId=m_ltCommands.GetAt(m_ltCommands.FindIndex(i));
		strText.LoadString(nId); 
		TEXTMETRIC   tm ;
		dc.GetTextMetrics( &tm );
		int nWidth=strText.GetLength()* tm.tmAveCharWidth;

		rcButton.right = rc.right+rcButton.Width()+nWidth;
		rcButton.left =rc.right ;
		pBtn->SetWindowPos(NULL, rcButton.left ,rcButton.top ,rcButton.Width()  ,rcButton.Height()  ,SWP_NOZORDER ); 
		rc=rcButton;
	}
}

void CSkinToolBar::SetBasicCommands(CList<UINT,UINT> &ltConmmand)
{
	m_ltCommands.RemoveAll ();
	m_ltCommands.AddTail (&ltConmmand);
}



⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -