CToolBar扩展类CToolBarEx

2016-02-19 15:02 25 1 收藏

今天图老师小编给大家精心推荐个CToolBar扩展类CToolBarEx教程,一起来看看过程究竟如何进行吧!喜欢还请点个赞哦~

【 tulaoshi.com - 编程语言 】

  我们知道,程序中的工具条是在CMainFrame中生成的,采用的类是CToolBar,使用起来很复杂。为此,对CToolBar的常用功能进行封装,生成了它的一个继承类CToolBarEx,大大简化了操作。编译环境:Windows 2000 Server sp3(en) 、VC++6.0 sp5。 先看使用方法:

  先看使用方法:

  先在CMainFrame中定义变量

  CToolBarEx tbex;

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)

  在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,"员工");

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)

  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;//默认图片大小为20X20sizeImage.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;}

本文示例代码或素材下载

来源:http://www.tulaoshi.com/n/20160219/1608669.html

延伸阅读
标签: Web开发
于是翻出了前年的Jquery中文文档。 大致浏览了下Jquery的方法。发现Jquery如此之强大,怎么以前就没有发现呢?于是就亲手写了基于Jquery的扩展函数,代码如下: 代码如下: jQuery.fn.__toggleCheck = function (idPrefix) { var c = false; $(this).click(function () { if (c) c = false; else c = true; $("input[type=checkbox][id...
我们在设计一个VB窗体时,常常放上许多控件,为了使这些控件看上去整整齐齐,我们不得不设置一大堆Left、Top、Height、Width属性,您是否已经感到厌烦并想转向Powerbuilder或Delphi等别急,让我们现在就来扩展一下VB的功能。 VB4.0提供了一个新功能:Add-Ins,利用这一功能我们就可以把自己的程序加到VB4的系统菜单Add-Ins里去,作为VB...
?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />   摘要:你想写出无需改变源代码就可以进行扩展的程序吗?这篇文章介绍了如何使用interface和动态class载入来创建高扩展性的系统。从中你也可以学习到如何令其他的编程者和用户不需你的源代码,就可以对程序进行扩展。首先我们看一个没有使用inter...
标签: Web开发
一直好忙,没有时间写属于自己的东西,但是看着一天天不更新心情也不是个滋味,只有从网上收罗一些比较好的东东贴上。 /*** 删除首尾空格 ***/ String.prototype.Trim = function() {   return this.replace(/(^\s*)|(\s*$)/g, ""); } /*** 统计指定字符出现的次数 ***/ String....
一、类文档说明 代码如下: class Image_Tool{     /**      * 构造Image_Tool对象      * @param string|array $img_data      * $img_data可以为图片的路径      */  function __construct($img_data="");  /**   * 添...

经验教程

713

收藏

60
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部