zoukankan      html  css  js  c++  java
  • VC++界面编程个性化你的工具栏图标(转)

     

    这几天在BBS上看到一篇文章,讲利用VC设计真彩的工具栏。其实,如果大家常用VC的话,肯定会觉得VC的工具栏的图标很丑陋,那么下面介绍的方法就可以让你给你的工具栏大变脸~~因为那是很久以前的文章,有些东西已经不太好用了,我测试了一下,改进了一些地方,下面把主要的步骤和关键内容贴出来,和大家共享了一下。^_^

    1. 下载一个可以制作真彩工具栏图标的免费的小工具,叫做TBCreatorCSDN上传文件实在是太慢,还经常出现问题,所以大家可以到Baidu和google上找一下,很方便的。      利用它,可以把找到的需要合并的图标加进去,自动合并成一个真彩工具条位图。而且可以再拆分,重新组合,前后位置也可以从新排列。呵呵,不到一分钟,一个pp的bmp位图就完成了。而且还能同时生成normal图和disabled图。

    vranger提供下载:(TBCreator.rar

    2. 下载CtrueColorToolBar 类,这是一个专门加载真彩位图制作 toolbar 的很实用的类。

    用这个类配合上面的工具,是一个很不错的组合。 这个类的原始下载地址是:http://www.codeproject.com/docking/TrueColorToolBar.asp(本文所在文件夹在含有该类的源文件同时存有一个demo)。

    vranger提供下载:(TrueColorToolBar_demo_vc7.0.zip)

    3. 下面进入熟悉的VC,建立一个MFC标准程序,将2中下载的两个文件(一个CPP文件,一个H文件)添加到工程里面。然后重新编译一下程序,这时候会发现多了一个CtrueColorToolBar类。

    4. 下面将我们准备好的工具条位图加入到程序中吧,TBCreator能同时生成normal位图和diabled位图,假设如下面的所示: 一个是normal图形,一个是disable图形: Normal 位图:

    Disable 位图:

    先将这两个位图文件拷贝到程序的 res 目录下面,然后在 Resource View 中单击右键,用 Import 导入这两个位图,程序会自动生成两个ID号,当然你可以修改ID为IDB_NORMAL和IDB_DISABLE。 可以发现,这个例子想要的是48×48 拼成的工具条(我们用TBCreator编辑的图像资源是48×48)。这个时候将用到系统自动生成的工具条了。找到 toolbar 资源下的IDR_MAINFRAME,这里可以根据需要进行更改按钮的数目,删除多余的吧。由于现在需要增加的是一个48×48的大小的按钮,所以还得修改按钮大小(很重要,不然你得到的图片会只有默认的16×16的效果。双击其中任何一个按钮,修改大小为:48×48。

    5.   找到程序的CmainFrame框架类的成员变量m_wndToolBar,这就是工具条变量。 系统默认的是Ctoolbar类,将Ctoolbar修改成CtrueColorToolBar即可。 在程序的引用CtrueColorToolBar类的文件中包含其头文件,本例是文件MainFrm.h的开头,增加一句: #include "TrueColorToolBar.h" 然后找到程序CmainFrame框架类的操作方法OnCreate函数。这里可是产生工具条的地方。在这里增加这样一条语句:

    m_wndToolBar.LoadTrueColorToolBar( 48,                                                                   

    IDB_NORMAL,                                                                          

    IDB_NORMAL,                                                                   

    IDB_DISABLED);

    3个参数分别代表的意义是:48表示工具条按钮大小是48×48,第二个是normal工具条位图ID,第三个是hot(可以使用normal的ID)工具条位图ID,最后一个是disable工具条位图ID。 增加的位置可参考例子代码。 现在可以编译运行了,真彩工具条就可以出来了吧。

    6.   最后,你可以和一般程序一样,对系统产生的toolbar资源下的IDR_MAINFRAME工具条的按钮进行设置,编写相应的响应函数即可。

  • 相关阅读:
    C#如何不使用递归实现无限层次结构的代码分享[转]
    asp.net mvc2 templates的一篇文章
    asp.net mvc Model验证总结及常用正则表达式
    关于IE的Ajax请求结果缓存的问题
    在ASP.NET MVC中如何让ASCX用户控件具有Action / Controller
    Kubernetes之Pod介绍
    Docker 之Swarm介绍
    Docker之多机网络
    Kubernetes之Pod调度
    Docker之隔离技术
  • 原文地址:https://www.cnblogs.com/vranger/p/3084015.html
Copyright © 2011-2022 走看看