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

📄 toolbarex.cpp

📁 一个关于OPC DA 的客户端程序
💻 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 + -