大雀软件园

首页 软件下载 安卓市场 苹果市场 电脑游戏 安卓游戏 文章资讯 驱动下载
技术开发 网页设计 图形图象 数据库 网络媒体 网络安全 站长CLUB 操作系统 媒体动画 安卓相关
当前位置: 首页 -> 技术开发 -> 程序开发 -> 在VC++下实现高彩色工具条

在VC++下实现高彩色工具条

时间: 2021-07-31 作者:daque

郎锐  弁言  少许windows体例自带步调如资源处置器、internet explorer等步调的东西条看上去和其余少许步调的东西条不太一律,在脸色上要美丽很多。本来那些步调的东西条上的图标均为256色,而普遍运用步调在东西栏上所表露图目标脸色常常惟有16色,这就确定了后者在视觉上远没有前者场面。因为windows随体例而带的步调也是由开拓职员编写的运用步调,这就证明经过步调源代码不妨实行256色以至更多颜色的图标在东西栏上的表露。为此笔者过程探求,经过mfc编制程序在运用步调中实行了高彩色东西条。现将实行的重要本领引见如次,以飨宏大读者群。  基础安排思绪  在实行高彩色东西条之前,先接洽一下普遍16色的东西条的实行进程,并居中归纳出矫正本领。在vc的资源视图中东西条是一个资源名为idr_mainframe的toolbar型资源,并可经过在编纂按钮上的图标来实行东西条上海图书馆目标绘制。固然在资源视图中东西条上各按钮的图标是彼此独力的,但在保存时并非像图标一律生存为ico方法文献而是以bmp位图方法生存在磁盘上的。该位图是一个由东西条上的按钮图标构成的长条型位图图像,中央没有任何裂缝,在步调运转和在资源视图对东西条举行编纂时该图像开始承载到一个图像列表中,而后东西栏按照索引顺序从图像列表中将图像表露到东西条的各个按钮上。因为vc控制东西栏上的图标不许胜过16色,所以不管是在资源视图径直编纂位图仍旧用复制粘贴等本领均没辙获得胜过256色的东西条(注:用复制粘贴的本领固然在编纂视图中不妨姑且表露出256色的图标,但在步调运转时仍会蜕化成16色)。  因为不许在资源视图中经过编纂toolbar资源实行16色之上的图标,加之东西条在表露时有并不径直从toolbar获得图标而是从图像列表中读取,所以不妨经过其余少许图像处置软硬件做好一致于东西条的bmp图像(仅脸色比普遍东西条bmp图像充分,其他实足一律),并以位图的情势介入到步调资源。在运用时,先将其读取到图像列表,如许图像列表顶用于表露到东西条上的图目标脸色就不妨是256、24位、以至32位色的了。因为东西条缺省时将径直加载资源名为idr_mainframe的toolbar型资源动作图目标根源,所以还必需经过setimagelist()因变量将含有高彩色东西条位图的图像列表指定于东西条的图标根源。  真彩东西条的实行  因为东西条的创造是在主框架类的oncreate()因变量中实行的,所以高彩色图像的承载和图像列表的替代处事必需也在此举行。在进路途序安排之前,须要做好百般筹备处事,比方高彩色东西条位图的绘制、高彩色位图介入到资源等。绘制东西条位图时,必需遏制好图像的尺寸,如须要有n个边长为 m的图标,那么须要绘制的位图尺寸为长=n*m;宽=m。真彩位图在介入到工程之后就不许再在vc的资源视图中举行编纂了。因为这个彩色位图仅起到粉饰界面包车型的士效率,所以简直对的事变相应等处事还要经过树立原有的toolbar资源来实行。  筹备处事停当后,先要把东西条位图承载到图像列表,如许本领被东西条做获得。在作这一步时,必需用::loadimage()因变量去加载东西条位图,并经过宏makeintresource()来指定简直要加载哪一个资源位图:hbitmap hbm = (hbitmap)::loadimage(afxgetinstancehandle(),makeintresource(idb_toolbar), //加载idb_toolbarimage_bitmap, //按位图方法0,0, // cx,cylr_createdibsection | lr_loadmap3dcolors );loadimage归来一个位图句柄hbitmap,但在mfc下运用cbitmaps会越发简单,可创造一个cbitmap东西并用attach()分子因变量将它与位图句柄接洽起来:cbitmap bm;bm.attach(hbm);   mfc加载东西栏位图时运用了一个里面因变量afxloadsyscolorbitmap()将缺省脸色设定于16色,所以为了表露16色之上的图像,必需在挪用图像列表类cimagelist的create()因变量创造图像列表时对图像清单做进一步的处置:m_iltoolbar.create(32,32,ilc_color8, 4, 4);m_iltoolbar.add(&bm,(cbitmap*)null);   这边用ilc_color8标领会创造的图像列表是256色的,在vc的commctrl.h中对其有设置,而且还供给有其余几种脸色位深度的预订义:#define ilc_color4 0x0004 //16色#define ilc_color8 0x0008 //256色#define ilc_color16 0x0010 //16位色#define ilc_color24 0x0018 //24位色#define ilc_color32 0x0020 //32位色   即使运用的东西条位图惟有256色(对于普遍步调如许仍旧充满),则明显没有需要再运用更高档其余位深度设置。结果一步,也是最要害的一步,必需经过setimagelist()因变量指定东西条m_wndtoolbar的图标根源不复是从来缺省的图像列表而是含有高彩色位图的图像列表m_iltoolbar:m_wndtoolbar.gettoolbarctrl().setimagelist(&m_iltoolbar);   到此为止就不妨经过mfc在本人编写的步调中实行一致于ie等软硬件的美丽的东西条了。  总结  正文经过对动作东西条图标根源的图像列表的替代,实行了在普遍mfc运用步调中完备了往常惟有windows体例自带步调才完备的高彩色东西条。较好地粉饰了步调的界面。正文步调在windows 98下,由microsoft visual c++ 6.0编写翻译经过。

热门阅览

最新排行

Copyright © 2019-2021 大雀软件园(www.daque.cn) All Rights Reserved.