`
huozheleisi
  • 浏览: 1291540 次
文章分类
社区版块
存档分类
最新评论

真彩位图工具栏的实现

 
阅读更多

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,使按钮具有很好的动感。至于各按钮的响应方法与普通工具栏是一样的。

示例程序界面:

示例程序界面

http://221.199.150.103/jsj/Html/vc/wen/vcwen08.htm
分享到:
评论

相关推荐

    vc真彩工具栏封装类

    "vc真彩工具栏封装类"是一个专门针对Visual C++(vc)开发环境设计的组件,其目标是实现真彩色(True Color)的工具栏功能。在传统的Windows API中,工具栏通常只能显示256色或更低色彩的图像,而真彩工具栏封装类则...

    用CTrueColorToolBar类实现真彩位图

    CTrueColorToolBar类是MFC库的一个扩展,它继承自CtoolbarCtrl类,专门为实现32位真彩色工具栏图标设计。这个类提供了额外的功能,允许你在工具栏中显示24位或32位颜色深度的图标,从而带来更加细腻丰富的色彩表现。...

    VC动态真彩工具栏代码

    "VC动态真彩工具栏代码"是指利用Microsoft Visual C++(VC++)进行程序设计时,实现工具栏动态加载和显示高色彩(通常指24位或更高的色彩深度)图像的技术。下面我们将深入探讨这一主题。 首先,我们了解工具栏的...

    Visual Toolbar+CtrueColorToolBar类真彩工具栏实例

    相比于传统的资源编辑器生成的位图工具栏,Visual Toolbar 提供了更灵活的设计选项,使得工具栏可以更好地适应不同分辨率和DPI设置,从而提供更好的用户体验。 CtrueColorToolBar 类是MFC(Microsoft Foundation ...

    商业编程-源码-本代码实现用CReBar制作动态真彩工具栏.zip

    本资源“商业编程-源码-本代码实现用CReBar制作动态真彩工具栏.zip”提供了一种使用CReBar类创建动态真彩工具栏的方法。下面我们将详细探讨CReBar类以及如何利用它来构建这种高级的工具栏。 CReBar是MFC(Microsoft...

    24位真彩位图处理源码

    5. `MainFrm.cpp`:主框架窗口的实现,通常包含菜单、工具栏等界面元素的初始化。 6. `StdAfx.cpp`、`StdAfx.h`:预编译头文件,用于提高编译速度,包含项目中常用且不经常改变的头文件。 7. `Exploring the ...

    VC实现超酷工具栏封装类

    3. **加载资源**:使用`LoadBitmap()`函数加载真彩位图资源,这些位图包含了工具栏按钮的各种状态。同时,可能还需要使用`LoadCursor()`加载光标资源,以定义按钮的拖动行为。 4. **创建按钮**:在`OnInitDialog()`...

    继承CToolBar自绘具有真彩按钮的工具栏

    你可以通过加载这些图标并应用上述步骤,实现在工具栏上显示真彩按钮的功能。 总的来说,这个例子展示了如何通过MFC和CToolBar类的自定义,增强Windows应用程序的视觉效果,提供更加现代和吸引人的用户界面。通过...

    VC工具栏上显示真彩色图像

    本文将深入探讨如何在VC工具栏上实现真彩色图像的显示。 首先,了解真彩色的概念至关重要。真彩色是指具有至少24位深度的颜色模式,它能够表示超过1600万种不同的颜色,几乎涵盖了人眼能识别的所有颜色范围。在...

    制作真彩工具栏图标的软件TBCreator

    一个可以制作真彩工具栏图标的免费的小工具,利用它,可以把找到的需要合并的图标加进去,自动合并成一个真彩工具条位图。而且可以再拆分,重新组合,前后位置也可以从新排列。不到一分钟,一个漂亮的bmp位图就完成...

    VC图标处理与工具栏制作软件

    2. 真彩工具栏制作:工具栏是软件界面的核心部分,它通常包含一系列按钮,用户可以通过点击这些按钮执行特定操作。真彩色工具栏意味着它可以显示超过256色的丰富色彩,提供更细腻、真实的效果。制作真彩工具栏时,...

    vs2010 CMFCToolBar 工具栏 修改背景颜色

    `CMFCToolBar`是MFC库中的一个类,它继承自`CControlBar`,用于实现具有自定义功能的工具栏。这个类提供了很多特性,比如浮动、停靠、拖放功能、图标支持、文字标签等。 2. **颜色管理**: 在Windows API中,颜色...

    VC制作真彩工具条(包含demo)

    总结一下,制作真彩工具条在VC++中主要涉及位图资源的管理和利用,MFC的CToolBar类,以及可能的图标与位图转换。提供的demo和小程序为我们提供了实践这些概念的实例,通过学习和分析这些代码,开发者可以更好地理解...

    vc工具栏封装类(超炫的)

    "vc工具栏封装类(超炫的)" 是一个专为VC++开发者设计的库,它提供了一种高效且易于使用的工具栏实现方式,以提升应用程序的用户界面体验。 这个工具栏封装类可能包含以下关键知识点: 1. **自定义控件**:封装类...

    文档Visual Toolbar

    【CtrueColorToolBar】是一个MFC扩展类,专门用于加载和显示由Visual Toolbar制作的真彩位图,提供了一个简单的方法来实现在程序中集成真彩工具栏。这个类使得开发者无需深入复杂的图像处理技术,即可轻松实现真彩...

    VC++对话框真彩工具条制作

    创建真彩工具条的关键在于设置正确的位图资源和颜色配置。传统的工具条可能在16色或256色模式下显示,但现代系统支持真彩色,我们可以通过以下步骤实现: 1. **设计工具条位图**:使用图像编辑软件(如Paint.NET或...

    GIS功能开发解决方案

    4、实现人性菜单按钮,有工具栏纹理、文字、菜单图标,以及右键菜单功能; 5、实现视图窗口位图背景; 6、实现状态栏信息功能,显示坐标和高程; 7、实现对话框按钮个性化,平面加图标,自己琢磨还有更多效果; ...

    Visual C++编程技巧精选500例.pdf

    081 如何为工具栏添加动态真彩按钮? 082 如何为工具栏按钮添加文字? 083 如何为IE工具栏添加按钮? 084 如何在工具栏上加载动画? 085 如何在工具栏上加载组合框? 086 如何在工具栏上加载字体组合框? 087 如何使用代码...

Global site tag (gtag.js) - Google Analytics