VC++打造漂亮的工具条 .

/-------------------------------

看正文前注意:在vs2008要修改下CTrueColorToolBar中的OnToolbarDropDown(NMTOOLBAR* pnmh, LRESULT* plRes);函数

具体方法参考下面:

今天碰到一个问题

static_cast” : 无法从void (__thiscall CMainFrame::* )(NMTOOLBARA *,LRESULT *)”转换为“void (__thiscall CCmdTarget::* )(NMHDR *,LRESULT *)”

因是后生,所以前辈们都已经有了答案,我唯一能做的就是学习和总结。方法:

vc6->vc7 (NMTOOLBAR->NMHDR) void CMainFrame::OnToolbarDropDown(NMTOOLBAR* pnmtb, LRESULT *plr) vc7: error C2440: “static_cast” : 无法从“void (__thiscall CMainFrame::* )(NMTOOLBARA *,LRESULT *)”转换为“void (__thiscall CCmdTarget::* )(NMHDR *,LRESULT *)” 改成 void CMainFrame::OnToolbarDropDown(NMHDR* pnmhdr, LRESULT *plr) {     LPNMTOOLBAR pnmtb = reinterpret_cast<LPNMTOOLBAR>(pnmhdr);     ... }  

--------------------------------/

正文::

将要达到的效果如图:
1、真彩色按钮
2、按钮旁边加下拉箭头

 
 
下面开始首先由visual toolbar(实用的小工具,网上由破解版)制作自己的toolbar,很方便,自动生成normal、hot和disable状态的toolbar。将制作好的Toolbar放到res目录里面,然后引入的工程(本例建立的工程名为test,加入的toolbar BMPde的ID为IDB_TEST_HOT和IDB_TEST_DISABLED,仅用了两个状态的toolbar)中来。

下面介绍需要用到的类,CTrueColorToolBar,这个类是网上搜集的一个类。将这个类引入到工程中来。具体内容如下:
TrueColorToolBar.h

 

 
TrueColorToolBar.cpp
 
 
第一步:换掉原来的工具条
1、在MainFrm.h加入头文件TrueColorToolBar.h
#include "TrueColorToolbar.h"
2、在MainFrame类中加入成员变量
CTrueColorToolBar m_wndTCToolbar;
3、在资源中插入一个Toolbar,每个按钮的大小要与建立工具条位图时每个按钮的大小一致,个数要一样。ID设为ID_TOOLBAR_TEST。
 
4、修改CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)函数:
替换其中的m_wndToolBar为m_wndTCToolbar
将m_wndTCToolbar.LoadToolBar(IDR_MAINFRAME)中的IDR_MAINFRAME换为ID_TOOLBAR_TEST
5、调用CTrueColorToolBar类的成员函数,加载真彩工具条的位图。
m_wndTCToolbar.LoadTrueColorToolBar( 32, IDB_TEST_HOT, IDB_TEST_HOT, IDB_TEST_DISABLED);
第一个参数为按钮的边长,后面依次为normal、hot和disable状态的位图。
6、将按钮关联到菜单,修改按钮ID与菜单上对应项心相同即可。本例中的ID依次设置为ID_FILE_OPEN,ID_FILE_SAVE,ID_TEST_BACK,ID_TEST_STOP,ID_TEST_FORWARD,ID_TEST_HELP,后面四个分别在菜单中建立对应项并加响应函数。如图:
 
看一下效果吧,真彩工具条已经作成了:
 
第二步:制作下拉箭头
1、在资源中新建一个menu,ID设为IDR_TEST_MENU,这个菜单将是显示在下拉箭头下的那个菜单。如图建立一个:
 

2、在CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)中加入下面一句:
m_wndTCToolbar.AddDropDownButton(&m_wndTCToolbar,ID_FILE_OPEN,IDR_TEST_MENU);

好了,大功告成。


结束。。。。。。。。。。 

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值