VC真彩位图工具栏的实现.doc

  1. 1、本文档共3页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

VC++6.0直接支持256色工具栏的编辑和使用,若想建立真彩(24位位图)工具栏,必须借助其它绘图工具绘制工具栏位图。

制作真彩工具栏的主要步骤:

①用绘图工具(我用的是Fireworks)制作三张24位位图。其中:

30.bmp为工具可用时显示的位图:

31.bmp为工具不可用(变灰)时显示的位图:

32.bmp为鼠标进入工具按钮时显示的位图:

这里,每张位图中按钮的个数和大小可根据实际应用进行修改,本例中,每张位图有14个按钮,每个按钮大小为20×20。

这个制作过程是比较繁琐的,首先我把找来的小图片转换成24位位图,在Fireworks下把它转换为20×20的大小后保存,再用Fireworks把它转换为灰色位图和带边框的位图并分别保存。然后再把三组小图片分别拼接起来就行了。

②把三个位图导入资源(作为Bitmap资源),尽管在VC++下不能显示和编辑,但使用上没有问题。把三个位图的ID依次改为:

IDB_TOOLBARCOLOR、IDB_TOOLBARDISABLE、IDB_TOOLBARHOT

③在资源的工具栏项目中添加一个新的工具栏(如图),ID改为IDR_TOOLBAR,工具按钮的宽度和高度都改为20。在上面依次添加14个按钮并分好组,按钮上的内容无关紧要,只要不是空的就行了。删除系统原来的工具栏IDR_MAINFRAME。

这个工具栏在显示时,我们会用上面的位图替换各按钮。

④在MainFrm.h中定义三个位图列表对象和一个函数定义:

MainFrm.h:

CImageList????m_imageToolBar;

CImageList????m_imageToolBarDisable;

CImageList????m_imageToolBarHot;

voidInitToolBar();

⑤在MainFrm.cpp中修改工具栏的设置部分:

MainFrm.cpp:

if(!m_wndToolBar.CreateEx(this,TBSTYLE_FLAT,WS_CHILD|WS_VISIBLE|CBRS_TOP

????|CBRS_GRIPPER|CBRS_TOOLTIPS|CBRS_FLYBY|CBRS_SIZE_DYNAMIC)||

????!m_wndToolBar.LoadToolBar(IDR_TOOLBAR))??//指定工具栏ID号

{

????TRACE0(Failedtocreatetoolbar\n);

????return-1;??????//failtocreate

}

InitToolBar();????//设置真彩工具栏

这里要把原工具栏的ID(IDR_MAINFRAME)修改为新工具栏的ID(IDR_TOOLBAR),再调用函数InitToolBar()设置新工具栏。

⑥添加设置工具栏的函数InitToolBar():

void?CMainFrame::InitToolBar()

{

????CBitmap?bm;

????//活动的工具

????m_imageToolBar.Create(?20,?20,?TRUE?|?ILC_COLOR24,?11,?0?);

????bm.LoadBitmap(?IDB_TOOLBARCOLOR?);

????m_imageToolBar.Add(?bm,(CBitmap*)NULL?);

????bm.Detach();

????m_wndToolBar.GetToolBarCtrl().SetImageList(?m_imageToolBar?);

????//禁止的工具

????m_imageToolBarDisable.Create(?20,?20,?TRUE?|?ILC_COLOR24,?11,?0?);

????bm.LoadBitmap(?IDB_TOOLBARDISABLE?);

????m_imageToolBarDisable.Add(?bm,(CBitmap*)NULL?);

????bm.Detach();

????m_wndToolBar.GetToolBarCtrl().SetDisabledImageList(?m_imageToolBarDisable?);

????//当前的工具

????m_imageToolBarHot.Create(?20,?20,?TRUE?|?ILC_COLOR24,?11,?0?);?

????bm.LoadBitmap(?IDB_TOOLBARHOT?);

????m_imageToolBarHot.Add(?bm,(CBitmap*)NULL?);

????bm.Detach();

????m_wndToolBar.Ge

您可能关注的文档

文档评论(0)

Seiryu + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档