一个实用的CToolBar扩展类CToolBarEx

翻译|其它|编辑:郝浩|2005-11-28 09:11:00.000|阅读 1856 次

概述:

# 界面/图表报表/文档/IDE等千款热门软控件火热销售中 >>



源代码1:CToolBarEx示例程序


我们知道,程序中的工具条是在CMainFrame中生成的,采用的类是CToolBar,使用起来很复杂。为此,对CToolBar的常用功能进行封装,生成了它的一个继承类CToolBarEx,大大简化了操作。编译环境:Windows 2000 Server sp3(en) 、VC++6.0 sp5。本文参考了http://www.vckbase.com以前发表的关于工具条的文章,在此先表示感谢!



先看使用方法:

先在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;

}
 


标签:

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@evget.com


为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
扫码咨询


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP