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:
CImageListm_imageToolBar; CImageListm_imageToolBarDisable; CImageListm_imageToolBarHot; void InitToolBar(); |
⑤在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("Failed to create toolbar\n"); return -1;// fail to create } InitToolBar();//设置真彩工具栏
|
这里要把原工具栏的ID(IDR_MAINFRAME)修改为新工具栏的ID(IDR_TOOLBAR),再调用函数InitToolBar()设置新工具栏。
⑥添加设置工具栏的函数InitToolBar():
voidCMainFrame::InitToolBar() { CBitmapbm;
//活动的工具 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.GetToolBarCtrl().SetHotImageList(&m_imageToolBarHot); } |
其中在Create()函数中的参数依次为按钮宽度、高度、24位位图和按钮个数。
这样一个用24位位图组成的真彩工具栏就做好了,如果你的绘图能力很强,可以修改32.bmp,使按钮具有很好的动感。至于各按钮的响应方法与普通工具栏是一样的。
示例程序界面:

|
相关推荐
"vc真彩工具栏封装类"是一个专门针对Visual C++(vc)开发环境设计的组件,其目标是实现真彩色(True Color)的工具栏功能。在传统的Windows API中,工具栏通常只能显示256色或更低色彩的图像,而真彩工具栏封装类则...
CTrueColorToolBar类是MFC库的一个扩展,它继承自CtoolbarCtrl类,专门为实现32位真彩色工具栏图标设计。这个类提供了额外的功能,允许你在工具栏中显示24位或32位颜色深度的图标,从而带来更加细腻丰富的色彩表现。...
"VC动态真彩工具栏代码"是指利用Microsoft Visual C++(VC++)进行程序设计时,实现工具栏动态加载和显示高色彩(通常指24位或更高的色彩深度)图像的技术。下面我们将深入探讨这一主题。 首先,我们了解工具栏的...
相比于传统的资源编辑器生成的位图工具栏,Visual Toolbar 提供了更灵活的设计选项,使得工具栏可以更好地适应不同分辨率和DPI设置,从而提供更好的用户体验。 CtrueColorToolBar 类是MFC(Microsoft Foundation ...
本资源“商业编程-源码-本代码实现用CReBar制作动态真彩工具栏.zip”提供了一种使用CReBar类创建动态真彩工具栏的方法。下面我们将详细探讨CReBar类以及如何利用它来构建这种高级的工具栏。 CReBar是MFC(Microsoft...
5. `MainFrm.cpp`:主框架窗口的实现,通常包含菜单、工具栏等界面元素的初始化。 6. `StdAfx.cpp`、`StdAfx.h`:预编译头文件,用于提高编译速度,包含项目中常用且不经常改变的头文件。 7. `Exploring the ...
3. **加载资源**:使用`LoadBitmap()`函数加载真彩位图资源,这些位图包含了工具栏按钮的各种状态。同时,可能还需要使用`LoadCursor()`加载光标资源,以定义按钮的拖动行为。 4. **创建按钮**:在`OnInitDialog()`...
你可以通过加载这些图标并应用上述步骤,实现在工具栏上显示真彩按钮的功能。 总的来说,这个例子展示了如何通过MFC和CToolBar类的自定义,增强Windows应用程序的视觉效果,提供更加现代和吸引人的用户界面。通过...
本文将深入探讨如何在VC工具栏上实现真彩色图像的显示。 首先,了解真彩色的概念至关重要。真彩色是指具有至少24位深度的颜色模式,它能够表示超过1600万种不同的颜色,几乎涵盖了人眼能识别的所有颜色范围。在...
一个可以制作真彩工具栏图标的免费的小工具,利用它,可以把找到的需要合并的图标加进去,自动合并成一个真彩工具条位图。而且可以再拆分,重新组合,前后位置也可以从新排列。不到一分钟,一个漂亮的bmp位图就完成...
2. 真彩工具栏制作:工具栏是软件界面的核心部分,它通常包含一系列按钮,用户可以通过点击这些按钮执行特定操作。真彩色工具栏意味着它可以显示超过256色的丰富色彩,提供更细腻、真实的效果。制作真彩工具栏时,...
`CMFCToolBar`是MFC库中的一个类,它继承自`CControlBar`,用于实现具有自定义功能的工具栏。这个类提供了很多特性,比如浮动、停靠、拖放功能、图标支持、文字标签等。 2. **颜色管理**: 在Windows API中,颜色...
总结一下,制作真彩工具条在VC++中主要涉及位图资源的管理和利用,MFC的CToolBar类,以及可能的图标与位图转换。提供的demo和小程序为我们提供了实践这些概念的实例,通过学习和分析这些代码,开发者可以更好地理解...
"vc工具栏封装类(超炫的)" 是一个专为VC++开发者设计的库,它提供了一种高效且易于使用的工具栏实现方式,以提升应用程序的用户界面体验。 这个工具栏封装类可能包含以下关键知识点: 1. **自定义控件**:封装类...
【CtrueColorToolBar】是一个MFC扩展类,专门用于加载和显示由Visual Toolbar制作的真彩位图,提供了一个简单的方法来实现在程序中集成真彩工具栏。这个类使得开发者无需深入复杂的图像处理技术,即可轻松实现真彩...
创建真彩工具条的关键在于设置正确的位图资源和颜色配置。传统的工具条可能在16色或256色模式下显示,但现代系统支持真彩色,我们可以通过以下步骤实现: 1. **设计工具条位图**:使用图像编辑软件(如Paint.NET或...
4、实现人性菜单按钮,有工具栏纹理、文字、菜单图标,以及右键菜单功能; 5、实现视图窗口位图背景; 6、实现状态栏信息功能,显示坐标和高程; 7、实现对话框按钮个性化,平面加图标,自己琢磨还有更多效果; ...
081 如何为工具栏添加动态真彩按钮? 082 如何为工具栏按钮添加文字? 083 如何为IE工具栏添加按钮? 084 如何在工具栏上加载动画? 085 如何在工具栏上加载组合框? 086 如何在工具栏上加载字体组合框? 087 如何使用代码...