256色工具栏使用

Visual  C++ 6的IDE只能编辑16色工具栏,即使将256色以上的图片粘贴到工具栏中,程序编译后任然会降低颜色数。

要使用256色以上的位图作为工具栏图标,可以在代码中加载图片列表再设置到工具栏上。

要点:

1、向工具栏发送TB_SETIMAGELIST消息,可以设置工具栏处于正常情况下的图片列表。

2、向工具栏发送TB_SETHOTIMAGELIST消息,可以设置鼠标位于工具栏按钮之上时要显示的图片列表。

///

建立MFC对话框工程Toolbar256;

在资源编辑器中新建一个工具栏,ID为IDR_TOOLBAR,并在其上添加3个大小为32*32像素的按钮;

用图片编辑工具创建两幅24位真彩色位图,大小为96*32像素(可分成3个32*32像素);

将两幅位图导入项目的资源中,命名为IDB_COLD和IDB_HOT


添加成员
CToolBar m_toolbar;///工具栏

OnInitDialog
	///创建工具栏
	m_toolbar.CreateEx(this , TBSTYLE_FLAT , WS_CHILD | WS_VISIBLE | CBRS_TOP);
	m_toolbar.LoadToolBar(IDR_TOOLBAR);
	RepositionBars(AFX_IDW_CONTROLBAR_FIRST ,AFX_IDW_CONTROLBAR_LAST , 0);

	CImageList imgs;
	CBitmap bmp;
	///创建正常模式的图片列表
	bmp.LoadBitmap(IDB_COLD);
	imgs.Create(32,32,ILC_MASK |ILC_COLOR24 ,3,1);
	imgs.Add(&bmp , RGB(255,255,255));
	///将图片列表设置到工具栏上
	m_toolbar.SendMessage(TB_SETIMAGELIST , 0 , (LPARAM)imgs.m_hImageList);
	imgs.Detach();
	bmp.Detach();

	///创建鼠标处于按钮之上的图片列表
	bmp.LoadBitmap(IDB_HOT);
	imgs.Create(32,32,ILC_MASK | ILC_COLOR24 ,3,1);
	imgs.Add(&bmp,RGB(255,255,255));
	///将图片列表设置到工具栏上
	m_toolbar.SendMessage(TB_SETHOTIMAGELIST , 0 , (LPARAM)imgs.m_hImageList);
	imgs.Detach();
	bmp.Detach();



1、imgs.Create(32,32,ILC_MASK | ILC_COLOR24 ,3,1);创建图片列表的关键,前两个参数是列表中图片的大小,
ILC_OLOR24指出图片为24位真彩色,
ILC_MASK指出添加的图片显示时要让指定的颜色透明,最后两个参数是列表的初始大小和动态调整大小时的增量。
2、
imgs.Add(&bmp , RGB(255,255,255));将位图添加到图片列表,图片列表会按照创建时制定的大小来切分图片,本例是将96*32的图片切分为3个32*32的位图。
第二个参数为透明色,本例为白色













评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值