📄 skintoolbar.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> <Conmmand)
{
m_ltCommands.RemoveAll ();
m_ltCommands.AddTail (<Conmmand);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -