中国IT动力,最新最全的IT技术教程
最新100篇 | 推荐100篇 | 专题100篇 | 排行榜 | 搜索 | 在线API文档
首 页 | 程序开发 | 操作系统 | 软件应用 | 图形图象 | 网络应用 | 精文荟萃 | 教育认证 | 硬件维护 | 未整理篇 | 站长教程
ASP JS PHP工程 ASP.NET 网站建设 UML J2EESUN .NET VC VB VFP 网络维护 数据库 DB2 SQL2000 Oracle Mysql
服务器 Win2000 Office C DreamWeaver FireWorks Flash PhotoShop 上网宝典 CorelDraw 协议大全 网络安全 微软认证
硬件维护  CPU  主板  硬盘  内存  显卡  显示器  键盘鼠标  声卡音箱  打印机  机箱电源  BIOS  网卡  C#  Java  Delphi  vs.net2005
  当前位置:> 程序开发 > 编程语言 > Visual C++ > WINDOWS标准界面元素
一个实用的CToolBar扩展类CToolBarEx
作者:未知 时间:2005-07-20 14:11 出处:VC知识库 责编:chinaitpower
              摘要:一个实用的CToolBar扩展类CToolBarEx
一个实用的CToolBar扩展类CToolBarEx
作者:xiaojin


源代码1:CToolBarEx示例程序

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

 

先看使用方法:

先在CMainFrame中定义变量

CToolBarEx  tbex;

CMainFrameOnCreate()函数中加入如下代码:

//先创建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;

}

关闭本页
 
首页 | 投资与合作 | 服务条款 | 隐私政策 | 收藏本站 | 设为首页 | 新用户注册 | 免责声明 | 使用帮助
Copyright ©2005-2008 chinaitpower.com All rights reserved. www.chinaitpower.com 版权所有