Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2096346
  • 博文数量: 909
  • 博客积分: 4000
  • 博客等级: 上校
  • 技术积分: 12260
  • 用 户 组: 普通用户
  • 注册时间: 2008-05-06 20:50
文章分类

全部博文(909)

文章存档

2008年(909)

我的朋友

分类:

2008-05-06 21:47:17

一起学习
一个实用的 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;

}

下载本文示例代码


一个实用的 CToolBar 扩展类 CToolBarEx一个实用的 CToolBar 扩展类 CToolBarEx一个实用的 CToolBar 扩展类 CToolBarEx一个实用的 CToolBar 扩展类 CToolBarEx一个实用的 CToolBar 扩展类 CToolBarEx一个实用的 CToolBar 扩展类 CToolBarEx一个实用的 CToolBar 扩展类 CToolBarEx一个实用的 CToolBar 扩展类 CToolBarEx一个实用的 CToolBar 扩展类 CToolBarEx一个实用的 CToolBar 扩展类 CToolBarEx一个实用的 CToolBar 扩展类 CToolBarEx一个实用的 CToolBar 扩展类 CToolBarEx
阅读(396) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~