📄 toolbarex.cpp
字号:
// ToolBarEx.cpp : implementation file
//
#include "stdafx.h"
#include "ToolBarEx.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CToolBarEx
CToolBarEx::CToolBarEx()
{
m_crMask=RGB(192,192,192);
}
CToolBarEx::~CToolBarEx()
{
}
BEGIN_MESSAGE_MAP(CToolBarEx, CToolBar)
//{{AFX_MSG_MAP(CToolBarEx)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CToolBarEx message handlers
void CToolBarEx::LoadBitmap(UINT *pnIDBmp, UINT nCount,CSize sizeBmp)
{
CImageList imgBmp;
//设定位图
imgBmp.Create(sizeBmp.cx ,sizeBmp.cy,ILC_COLORDDB,4,4);
for(UINT n=0;n<nCount;n++)
{
CBitmap Bitmap;
Bitmap.LoadBitmap (pnIDBmp[n]);
imgBmp.Add (&Bitmap,RGB(0,0,0));
}
GetToolBarCtrl( ).SetImageList ( &imgBmp ) ;
imgBmp.Detach( ) ;
}
void CToolBarEx::SetButtonText(const CStringArray& strArr)
{
int nCount=GetToolBarCtrl( ).GetButtonCount();
ASSERT(nCount>strArr.GetUpperBound());
int nItem=0;
for(int n=0;n<nCount;n++)
{
ASSERT(nItem<=strArr.GetUpperBound());
UINT unStyle=GetButtonStyle(n);
if(unStyle!=TBBS_SEPARATOR)
CToolBar::SetButtonText (n, strArr.GetAt (nItem++) ) ;
}
//
CRect rt ;
GetItemRect ( 0, &rt ) ;
CSize sizeItem=rt.Size ();
// sizeItem.cy +=3;
SetSizes ( sizeItem, m_nSizeImage ) ;
}
BOOL CToolBarEx::LoadToolBar(UINT nIDResource)
{
BOOL bResult=CToolBar::LoadToolBar(nIDResource);
if(!bResult)
return bResult;
return LoadToolBar(MAKEINTRESOURCE(nIDResource));
return bResult;
}
BOOL CToolBarEx::LoadToolBar(LPCTSTR lpszResourceName)
{
ASSERT_VALID(this);
ASSERT(lpszResourceName != NULL);
BOOL bResult=CToolBar::LoadToolBar (lpszResourceName);
if(!bResult)
return bResult;
CRect Rect;
// CToolBar::GetToolBarCtrl().GetItemRect(0,&Rect);
// DWORD dsBtnSize=GetToolBarCtrl().GetButtonSize();
// int nWidth=LOWORD(dsBtnSize); //按钮外型尺寸
// int nHeight=HIWORD(dsBtnSize);
int nImageCount=CToolBar::GetToolBarCtrl().GetImageList ()->GetImageCount ();
VERIFY(nImageCount>0);
//位图大小
IMAGEINFO ImageInfo;
CToolBar::GetToolBarCtrl().GetImageList ()->GetImageInfo (0,&ImageInfo);
int nWidth=ImageInfo.rcImage .right -ImageInfo.rcImage.left ;
int nHeight=ImageInfo.rcImage .bottom -ImageInfo.rcImage.top ;
m_nSizeImage.cx =nWidth;
m_nSizeImage.cy =nHeight;
//*
// 加载工具栏位图 - 必须使用::LoadImage映射颜色
// 将(192,192,192) 映射到 COLOR_3DFACE.
//
HBITMAP hbm = (HBITMAP)::LoadImage(AfxGetInstanceHandle(),
lpszResourceName,
IMAGE_BITMAP,
0,0, // cx,cy
LR_CREATEDIBSECTION | LR_LOADMAP3DCOLORS );
CBitmap Bitmap;
Bitmap.Attach(hbm);
// Create image list and set in toolbar.
// Must use ILC_COLOR24 for 256-color images!
// 创建图像清单并设置工具栏
// 256色图像必须使用ILC_COLOR8!
//方法:
CImageList cImage;//
//1
cImage.Create(nWidth,nHeight, TRUE|ILC_COLOR24, 4, 4); //TRUE|ILC_COLOR24 ILC_COLOR8//TRUE-----透明模式
cImage.Add(&Bitmap,m_crMask);
//2
GetToolBarCtrl().SetImageList(&cImage);
//3
Bitmap.Detach ();
cImage.Detach ();
//*/
return bResult;
}
BOOL CToolBarEx::LoadBitmap(LPCTSTR lpszResourceName)
{
//*
CBitmap Bitmap;
BOOL bResult=Bitmap.LoadBitmap (lpszResourceName);
if(bResult)
SetBitmap (Bitmap.operator HBITMAP());
Bitmap.Detach();
//*/
/*
// 加载工具栏位图 - 必须使用::LoadImage映射颜色
// 将(192,192,192) 映射到 COLOR_3DFACE.
//
HBITMAP hbm = (HBITMAP)::LoadImage(AfxGetInstanceHandle(),
// MAKEINTRESOURCE(nIDResource),
lpszResourceName,
IMAGE_BITMAP,
0,0, // cx,cy
LR_CREATEDIBSECTION | LR_LOADMAP3DCOLORS );//Gray, RGB(192,192,192) COLOR_3DFACE
CBitmap Bitmap;
Bitmap.Attach(hbm);
SetBitmap (Bitmap.operator HBITMAP());
Bitmap.Detach();
BOOL bResult=TRUE;
// 创建图像清单并设置工具栏
// 256色图像必须使用ILC_COLOR8!
//
// m_cImageList.Create(20,20, ILC_COLOR8, 4, 4);
// m_cImageList.Create(20,20, ILC_COLOR24, 4, 4);
// bResult=m_cImageList.Add(&bm,(CBitmap*)NULL);
// GetToolBarCtrl().SetImageList(&m_cImageList);
//*/
return bResult;
}
void CToolBarEx::SetBlackMask(COLORREF crMask)
{
m_crMask=crMask;
}
BOOL CToolBarEx::CreateHotToolBar(CWnd* pParentWnd,LPCTSTR lpszResName,LPCTSTR lpszHotResName)
{
BOOL bResult=FALSE;
CToolBar cToolBar;
cToolBar.CreateEx (pParentWnd);
cToolBar.LoadToolBar (lpszResName);
//位图大小
IMAGEINFO ImageInfo;
cToolBar.GetToolBarCtrl().GetImageList ()->GetImageInfo (0,&ImageInfo);
int nWidth=ImageInfo.rcImage .right -ImageInfo.rcImage.left ;
int nHeight=ImageInfo.rcImage .bottom -ImageInfo.rcImage.top ;
m_nSizeImage.cx =nWidth;
m_nSizeImage.cy =nHeight;
//
CreateEx (pParentWnd);
LoadBitmap(lpszResName,FALSE);
LoadBitmap(lpszHotResName,TRUE);
//
ModifyStyle ( 0, TBSTYLE_FLAT | TBSTYLE_TRANSPARENT ) ;
int nCount= cToolBar.GetCount ();
SetButtons ( NULL,nCount ) ;
for(int i=0;i<nCount;i++)
{
UINT nID;
UINT nStyle;
int iImage;
cToolBar.GetButtonInfo(i,nID,nStyle,iImage);
SetButtonInfo ( i, nID, nStyle, iImage ) ;
}
//设定按钮尺寸
CRect rt ;
GetItemRect ( 0, &rt ) ;
SetSizes( rt.Size( ), m_nSizeImage ) ;
return bResult;
}
BOOL CToolBarEx::LoadBitmap(LPCTSTR lpszResourceName,BOOL bHot)
{
BOOL bResult=TRUE;
//
// 加载工具栏位图 - 必须使用::LoadImage映射颜色
// 将(192,192,192) 映射到 COLOR_3DFACE.
//
HBITMAP hbm = (HBITMAP)::LoadImage(AfxGetInstanceHandle(),
lpszResourceName,
IMAGE_BITMAP,
0,0, // cx,cy
LR_CREATEDIBSECTION | LR_LOADMAP3DCOLORS );
CBitmap Bitmap;
Bitmap.Attach(hbm);
// Create image list and set in toolbar.
// Must use ILC_COLOR24 for 256-color images!
// 创建图像清单并设置工具栏
// 256色图像必须使用ILC_COLOR8!
//方法:
CImageList cImage;//
//1
cImage.Create(m_nSizeImage.cx ,m_nSizeImage.cy , TRUE|ILC_COLOR24, 4, 4); //TRUE|ILC_COLOR24 ILC_COLOR8//TRUE-----透明模式
cImage.Add(&Bitmap,m_crMask);
//2
if(!bHot)
GetToolBarCtrl().SetImageList(&cImage);
else
GetToolBarCtrl().SetHotImageList(&cImage);
//3
Bitmap.Detach ();
cImage.Detach ();
//*/
return bResult;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -