现在把我最新研究的对CMFCToolBar心得写在这边。

现在介绍两种加载工具栏的方式:

一种是静态加载工具栏,跟普通的加载工具栏一样,只是用了自定义图片。

一种是动态加载工具栏,这个也是需要静态工具的帮忙,这个的话原因还没有研究,但可以达到动态的效果。

还有特别需要介绍的是增加透明工具栏图片的方法。不知道一篇文章写这么多好不好。就算是分享学习了。

1、增加透明工具栏按钮图片。

1)获取一张需要插入工具栏的位图bmp;

2)用Adobe Photoshop CS3进行打开(就是图像处理工具,一般都可以)。

3)点击箭头,然后全选图片。

4)全选图片,进行拷贝。

5)双击右下角通道。

6)点击新建通道

7)黏贴刚刚复制的图片

8)区域选择,用魔棒把图标的外围选中,并填充外围颜色为黑色。

9)点击菜单中选择,点击反向,然后剪切。

10)另存图片。透明图标就做好了。

11)演示图标

这样就不会出现白色底了,透明图标。这图片大小会比普通图片大,因为加了通道。

2)CMFCToolBar 加载静态工具栏

1)、设置工具栏按钮数和按钮大小,以上图片是32像素,即宽度和高度设置成32*32

2)、声明成员变量

CMFCToolBar m_toolBar;

3)、加载代码

 //加载真彩图片工具栏 方式1.m_toolBar.CreateEx(this, TBSTYLE_FLAT,WS_CHILD|WS_VISIBLE|CBRS_TOP|CBRS_GRIPPER|CBRS_TOOLTIPS|CBRS_FLYBY|CBRS_SIZE_DYNAMIC);m_toolBar.LoadToolBar(IDR_MY_TOOLBAR, 0, 0, TRUE, 0, 0, IDB_TOOL_FIRST_BMP);m_toolBar.SetRouteCommandsViaFrame(FALSE);//设置消息以对话框方式传递//根据对话框大小调整工具栏 包含无菜单位置CRect rect;GetClientRect(rect);if (m_toolBar.GetSafeHwnd() != NULL){int cyTlb = m_toolBar.CalcFixedLayout(FALSE, TRUE).cy;m_toolBar.SetWindowPos(NULL, rect.left, rect.top+2, rect.Width(), cyTlb, SWP_NOACTIVATE | SWP_NOZORDER);}//m_toolBar.AdjustSizeImmediate();//根据按钮大小调整工具栏

4)、成果如上图所示。

2、CMFCToolBar 动态工具栏

这个设置可变按钮个数工具栏

也要用到静态设置的工具栏长度大小。

1)、设置工具栏按钮大小和工具栏按钮个数,按钮个数为最大工具栏按钮个数。每个按钮id为自定义,因为这个工具资源可重复利用

动态设置按钮的ID跟这静态设置按钮的ID无关,后面会根据动态ID进行消息发放。可以设置一个按钮,用于管理工具栏资源。

3)、声明成员变量

CMFCToolBar m_toolBar;

4)、加载代码

m_toolBar.CreateEx(this, TBSTYLE_FLAT,WS_CHILD|WS_VISIBLE|CBRS_TOP|CBRS_GRIPPER|CBRS_TOOLTIPS|CBRS_FLYBY|CBRS_SIZE_DYNAMIC);m_toolBar.AddToolBarForImageCollection(IDR_EXT_MY_TOOLBAR, IDB_EXIT_BMP);m_toolBar.SetSizes(CSize(32,32), CSize(32,32));//设置按钮大小m_mfcToolbarImage.SetImageSize(CSize(32, 32), TRUE);CBitmap bmp;bmp.LoadBitmap(IDB_EXIT_BMP);m_mfcToolbarImage.AddImage(bmp);bmp.DeleteObject();bmp.LoadBitmap(IDB_EDIT_ADD_BMP);m_mfcToolbarImage.AddImage(bmp);int aa = m_toolBar.SetUserImages(&m_mfcToolbarImage);//m_toolBar.imagem_toolBar.InsertButton(CMFCToolBarButton(ID_FILE_NEW , 0,  "这是提示?", TRUE, 0));// 在这里CMFCToolBarButton()第四个参数需要设置为true,这样在重绘的时候才会,调用自己设置的图像。  m_toolBar.InsertButton(CMFCToolBarButton(ID_FILE_OPEN , 1,  "这是提示1?", TRUE, 0));m_toolBar.AdjustSizeImmediate();//根据按钮大小调整工具栏

5)效果图

大概写完了,以后会更新的。

MFC CMFCToolBar静态工具栏和动态工具栏,加载自定义图片(真彩透明)相关推荐

  1. zTree异步加载(自定义图片)

    zTree官网:点击打开链接 一:文件下载 点击首页右下角的ztree download,选择Guihub下载 点击Clone or download下载 二:相关包介绍 jquery.ztree.c ...

  2. pl.droidsonroids.gif.GifImageView 动态加载gif图片不动的问题

    今天由于需求的原因,需要GifImageView 去动态代码加载gif图片,结果平时在XMl里面正常加载的gif图片,动态加载却一动不动,原谅作为渣渣的我平时不怎么去研究gif,查了许久才发现 ,需要 ...

  3. c 语言解析png图片文件信息,使用CImage加载PNG图片文件

    在MFC开发中,大家很容易用到PNG等流行媒体格式.但是MFC只提供了简单的BMP,ICON等文件的加载.此时,使用CImage将使得图片加载轻松自如. CImage加载导入图片 首先加载动态图片进入 ...

  4. Python图片转gif(将静态图转化为分块加载的动态图)

    简介 将静态图转化为分块加载的动态图 方案 1. PIL: 1. 创建背景图2. 将原图拆分成N块并依次合成到背景图的相应位置, 得到N张素材图3. 将N张素材图合成GIF2. pygifsicle对 ...

  5. gridpanel动态重新加载columnModel与store

    gridpanel动态重新加载columnModel与store 其实很简单的,主要就是以下三项. //重新绑定grid this.grid.reconfigure(newStore, new Ext ...

  6. 【Android NDK 开发】Android.mk 配置动态库 ( Android Studio 配置动态库 | 动态库加载版本限制 | 本章仅做参考推荐使用 CMake 配置动态库 )

    文章目录 I . Android Studio 中使用 Android.mk 配置动态库 总结 II . 第三方动态库来源 III . 配置 Android.mk 构建脚本路径 IV . 预编译 第三 ...

  7. ELF动态库加载技术

    库用于将相似函数打包在一个单元中.Linux支持两种类型的库:静态库(在编译时静态绑定到程序)和动态库(在运行时绑定到程序).Linux系统使用的动态库是ELF格式,后缀名为so. 1 加载 动态库内 ...

  8. ajax动态加载div,JQuery/AJAX:使用动态内容加载外部DIV使用动态内容

    我需要创建一个页面,使用Jquery和AJAX从外部页面加载div.JQuery/AJAX:使用动态内容加载外部DIV使用动态内容 我遇到了一些很好的教程,但它们都是基于静态内容的,我的链接和内容是由 ...

  9. postgresql源码学习(57)—— pg中的四种动态库加载方法

    一. 基础知识 1. 什么是库 库其实就是一些通用代码,可以在程序中重复使用,比如一些数学函数,可以不需要自己编写,直接调用相关函数即可实现,避免重复造轮子. 在linux中,支持两种类型的库: 1. ...

最新文章

  1. 【Flutter】Flutter 布局组件 ( Wrap 组件 | Expanded 组件 )
  2. 新技能Get,PC整机快速备份和还原靠谱攻略
  3. 运维自动化之使用PHP+MYSQL+SHELL打造私有监控系统(二)
  4. 修改节点大小_重磅前瞻!K8S 1.18即将发布:OIDC发现、Windows节点支持,还有哪些新特性值得期待?...
  5. 【Hadoop应用案例】针对运营商支付业务的渠道推荐系统
  6. mybatis多对多的问题汇总
  7. 介绍一种Fiori标准应用的增强方式
  8. Apache Spark Job的剖析
  9. Spring Data MongoDB教程
  10. 浅谈蓝牙“嗅探”功能设计
  11. mysql dql_Mysql中的DQL查询语句
  12. 最小二乘法系统辨识小结
  13. 桌面共享工具(可以实现RTMP直播、K歌、投屏等功能)
  14. UCDOS和鲍岳桥and 我和我的嵌入式GUI(DOS,Linux,uC/OS-II等)
  15. 【网络攻防技术】实验七—— XSS攻击实验(Elgg)
  16. 笔记本连接无线蓝牙缺少驱动解决方法
  17. 教学演示软件 模型十二 地理学的水循环模型
  18. 菠萝罐头的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
  19. S3C2410的触摸屏控制
  20. VS编译release版本的出现的LNK1104 无法打开文件“libboost_filesystem-vc140-mt-1_58.lib

热门文章

  1. macbook pro 卸载mysql_MacBook Pro全新重装OS X Yosemite
  2. 回顾“90后”——MISRA的25年岁月
  3. VS 2015 社区版(Community) 试用期(30天)之后,账户登录
  4. Redis实现秒杀库存加减
  5. 复合材料专场 | ABAQUS车载四型复合材料气瓶固化过程的数值模拟分析攻略
  6. web性能优化以及SEO
  7. HDFS启动的时候出现JAVA_HOME is not set and could not be found.
  8. Unity Render Texture 的使用
  9. 商品详情页上拉查看详情开源库
  10. 学习分布式的B站视频