当前位置: 首页 > 图文教程 > 开发语言 > VC++ > 一个实用的CToolBar扩展类CToolBarEx

VC++
在类VC的界面实现中加入目录树
软件换肤技术在 BCB 中的实现
利用非模窗口生成MDI介面
报表输出轻松搞定
Windows 中不规则窗体的编程实现
解说Win32的窗口子类化
使用测试优先方法开发用户界面
一个简单的登录对话框的实现
一个简单的日记本程序
从资源中加载皮肤
一个在RichEdit中添加表情图象的类
ActiveSkin 4.3 软件换肤在VC中的实现
一种另类“关于(About)”对话框的动态显示方法
对话框打印预览及打印
关于如何换肤、子类化的解决方案
制作 MSN、QQ 的消息提示窗口
如何对 BCGControlBarPro 进行换肤
定制个性化的对话框窗口类
改变窗口中的光标形状
更新MFC中的视图,跟踪.NET Framework中的事件

VC++ 中的 一个实用的CToolBar扩展类CToolBarEx


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-10-30   浏览: 71 ::
收藏到网摘: n/a

一个实用的 CToolBar 扩展类 CToolBarEx

作者:xiaojin

下载源代码

  我们知道,程序中的工具条是在CMainFrame中生成的,采用的类是CToolBar,使用起来很复杂。为此,对CToolBar的常用功能进行封装,生成了它的一个继承类CToolBarEx,大大简化了操作。本文参考了 VCKBASE 以前发表的关于工具条的文章,在此先表示感谢!

编译环境:Windows 2000 Server sp3(en) 、VC++6.0 sp5。

先看使用方法:先在CMainFrame中定义变量

CToolBarEx tbex;
在CMainFrame的OnCreate()函数中加入如下代码:
//先创建ToolBar,取代原来的代码tbex.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC);//设置按钮个数,分割条也要算一个哦tbex.SetButtonNumber(5);//加入图片tbex.AddIcon(AfxGetApp()->LoadIcon(IDR_MAINFRAME)); tbex.AddIcon(AfxGetApp()->LoadIcon(IDR_TBTYPE)); tbex.AddIcon(AfxGetApp()->LoadIcon(IDI_SWIRE)); tbex.AddIcon(AfxGetApp()->LoadIcon(IDI_ICON1)); //设置每个按钮的位置、ID、图片索引和文字tbex.SetButton(0,ID_APP_ABOUT,0,"员工");tbex.SetButton(1,ID_APP_EXIT,1,"进料");//加入分割条tbex.AddSeparator (2);tbex.SetButton(3,ID_APP_ABOUT,2,"Swire");tbex.SetButton(4,ID_APP_ABOUT,3,"Coca");//设置每个按钮大小tbex.SetSize(); //或者tbex.SetDefaultSize()
这样,一个漂亮的ToolBar就显现在我们面前,是不是很简单啊。

◆类定义

class CToolBarEx : public CToolBar{public: CToolBarEx();public://设置图片大小 void SetImageSize(int nImageWidth,int nImageHeight); //加入图片 void AddBitmap(CBitmap* pbmImage, COLORREF crMask); void AddBitmap(CBitmap* pbmImage, CBitmap* pbmMask);void AddIcon(HICON hIcon);//设置按钮大小为默认大小 void SetDefaultSize();//加入分割条 void AddSeparator(int nButton); //设置按钮大小,默认是50X40,具体设定必须符合ToolBar的要求,可以自己调 void SetSize(int nWidth=50,int nHeight=40);//设置按钮图片和文字 void SetButton(int nButton,int nID, int nImage,LPTSTR lpText);//设置按钮图片无文字 void SetButton(int nButton,int nID, int nImage);//设置按钮个数 void SetButtonNumber(int n);//加入图片到ToolBarEx,在AddIcon()和AddBitmap()中自动调用 void SetImage();//图片变量 CImageList img;//图片大小变量 CSize sizeImage; virtual ~CToolBarEx();protected: DECLARE_MESSAGE_MAP()};
◆类具体实现:
CToolBarEx::CToolBarEx(){ sizeImage.cx =20;//默认图片大小为20X20 sizeImage.cy =20; img.Create(sizeImage.cx-1, sizeImage.cy-1, ILC_COLOR8|ILC_MASK, 1,1);}CToolBarEx::~CToolBarEx(){}void CToolBarEx::SetImage(){ this->GetToolBarCtrl().SetImageList (&img);}void CToolBarEx::SetButtonNumber(int n){ SetButtons(NULL,n);}void CToolBarEx::SetButton(int nButton, int nID, int nImage,LPTSTR lpText){ SetButtonInfo(nButton, nID, TBSTYLE_BUTTON, nImage); SetButtonText(nButton, lpText); }void CToolBarEx::SetButton(int nButton, int nID, int nImage){ SetButtonInfo(nButton, nID, TBSTYLE_BUTTON, nImage);}void CToolBarEx::SetSize(int nWidth,int nHeight){ CSize cs; cs.cx =nWidth; cs.cy =nHeight; SetSizes(cs, sizeImage);}void CToolBarEx::AddIcon(HICON hIcon){ img.Add (hIcon); SetImage();}void CToolBarEx::AddSeparator(int nButton){ SetButtonInfo(nButton, 0, TBBS_SEPARATOR, 0);}void CToolBarEx::SetDefaultSize(){ CRect rectToolBar; GetItemRect(0, &rectToolBar); //得到按钮的大小 SetSizes(rectToolBar.Size (), sizeImage); //设置按钮的大小}void CToolBarEx::AddBitmap(CBitmap *pbmImage, CBitmap *pbmMask){ img.Add( pbmImage, pbmMask);SetImage();}void CToolBarEx::AddBitmap(CBitmap *pbmImage, COLORREF crMask){ img.Add( pbmImage, crMask);SetImage();}void CToolBarEx::SetImageSize(int nImageWidth,int nImageHeight){ sizeImage.cx = nImageWidth; sizeImage.cy =nImageHeight;}