00. 目录

文章目录

  • 00. 目录
  • 01. 案例概述
  • 02. 开发环境
  • 03. 关键技术
  • 04. 程序设计
  • 05. 秘笈心法
  • 06. 源码下载
  • 07. 附录

01. 案例概述

默认情况下,MFC中提供的工具栏只能显示简单的图像。在实际开发过程中如何在工具栏中显示自定义图标呢?本案例实现了一个带有图标的工具栏按钮,效果如下图所示。

02. 开发环境

系统环境:Windows 10

开发环境:Visual Studio 2019

03. 关键技术

工具栏CToolBar提供了一个GetToolBarCtrl方法,用于获得一个CToolBarCtrl对象,该对象提供了一个SetImageList方法用于设置工具栏关联的图像列表控件。只要在程序中创建一个图像列表,并向图像列表中添加图标,将其与工具栏关联,那么工具栏按钮就会显示图像。

04. 程序设计

4.1 新建基于单文档视图结构的应用程序。

4.2 添加图标资源,将图标资源拷贝到项目所在的res目录中,然后找到资源视图,添加图标资源。

4.2 在框架类中定义一个CImageList对象m_Imagelist。

private:CImageList m_ImageList;

4.3 在框架类的OnCreate方法中创建图像列表,并向图像列表中添加图标。创建工具栏,将工具栏与图像列表关联。设置工具栏按钮的大小。

int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{if (CFrameWnd::OnCreate(lpCreateStruct) == -1)return -1;//创建图像列表,向图像列表中添加图标m_ImageList.Create(32, 32, ILC_COLOR24 | ILC_MASK, 0, 1);//添加一个或多个图象到图象列表中 for (int i = 0; i < 9; i++){m_ImageList.Add(AfxGetApp()->LoadIconW(IDI_ICON1 + i));}if (!m_wndToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP | CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) ||!m_wndToolBar.LoadToolBar(IDR_MAINFRAME)){TRACE0("未能创建工具栏\n");return -1;      // 未能创建}//设置工具栏图像列表m_wndToolBar.GetToolBarCtrl().SetImageList(&m_ImageList);//设置工具栏按钮大小m_wndToolBar.GetToolBarCtrl().SetButtonSize(CSize(40, 40));//设置工具栏按钮图像大小m_wndToolBar.GetToolBarCtrl().SetBitmapSize(CSize(30, 30));if (!m_wndStatusBar.Create(this)){TRACE0("未能创建状态栏\n");return -1;      // 未能创建}m_wndStatusBar.SetIndicators(indicators, sizeof(indicators)/sizeof(UINT));// TODO: 如果不需要可停靠工具栏,则删除这三行//设置工具栏停靠位置m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);//设置框架内对齐方式EnableDocking(CBRS_ALIGN_ANY);//将工具栏进行停靠DockControlBar(&m_wndToolBar);return 0;
}

05. 秘笈心法

工具栏种类

工具栏分为带图标的工具栏、带文字的工具栏和即带图标又带文字的工具栏。带图标的工具栏通过图标的演示作用很容易让人记忆,所以使用起来非常方便,即带图标又带文字的工具栏比只带图标的工具栏更加方便,单图标下方的文字的数量有限,只能是起到提示作用的文本,主要还是依靠图标的演示作用,而且需要结合提示条对工具栏按钮进行提示。

06. 源码下载

6.1 带图标的工具栏示例

下载:带图标的工具栏示例

07. 附录

【MFC】带图标的工具栏相关推荐

  1. 带图标工具栏的创建以及提示功能的添加

    一.带图标工具栏的创建: 第一步:将bmp位图或是ICON图标资源加入到资源视图中:我这里是bmp资源,添加资源时要按照你想要的顺序添加 第二步,在响应的头文件中定义CToolBar对象和CImage ...

  2. MFC实现256色工具栏图标及工具栏提示信息

    MFC中,ToolBar上的button绘制图标,默认只支持16色,如果从Icon资源将超过16色的bmp拷贝到ToolBar的button上会出现颜色失真,网上有使用CImageList实现256色 ...

  3. 【MFC】带背景的工具栏

    00. 目录 文章目录 00. 目录 01. 案例概述 02. 开发环境 03. 关键技术 04. 程序设计 05. 秘笈心法 06. 源码下载 07. 附录 01. 案例概述 带背景的工具栏可以为程 ...

  4. Qt添加工具栏(带图标)

    Qt添加工具栏(带图标) 一.准备图片   首先找到自己喜欢的图片存放到对应工程的目录下面,这是为了后面添加图标做准备. 二.创建动作 进入工程的UI设计界面: 点击如下的文件夹按钮新建动作: 填写信 ...

  5. 带图标和按钮切换特效的垂直导航菜单的html页面源码

    大家好,今天给大家介绍一款,带图标的垂直导航菜单的html页面源码(图1).送给大家哦,获取方式在本文末尾. 图1 点击每个按钮时,都有切换特效,并显示按钮的说明,看起来非常不错(图2) 图2 代码完 ...

  6. Android 自带图标库 android.R.drawable

    在xml文件中调用. android:title="@string/secure_connect" android:orderInCategory="100" ...

  7. 使用pipenv建立虚拟环境解决python打包exe文件过大的问题(附打包带图标,多个py文件打包exe)

    我们编写的程序可以发给其他小伙伴使用,但是其他小伙伴不一定安装有python.这时候就需要用到打包啦.打包可以将程序打包成exe文件.然后小伙伴在windows平台里就可以运行(无需python).直 ...

  8. 【MFC】固定按钮工具栏

    00. 目录 文章目录 00. 目录 01. 案例概述 02. 开发环境 03. 关键技术 04. 程序设计 05. 秘笈心法 06. 源码下载 07. 附录 01. 案例概述 通过MFC向导创建的应 ...

  9. 【MFC】定制浮动工具栏

    00. 目录 文章目录 00. 目录 01. 案例概述 02. 开发环境 03. 关键技术 04. 程序设计 05. 秘笈心法 06. 源码下载 07. 附录 01. 案例概述 Microsoft V ...

最新文章

  1. 自然语言推理:使用注意力机制
  2. 递归/回溯:Subsets II求子集(有重复元素)
  3. linux系统安全优化
  4. MySQL第8天:MySQL索引优化分析之SQL慢
  5. 如何分析堆外内存使用情况_堆上与堆外的内存使用情况
  6. java 解析 csv_在Java中将数据从CSV解析到数组
  7. Echarts初体验
  8. 疫情下的远程办公:理解Linux虚拟网络设备之tun/tap
  9. 数据驱动测试之——CSV+TestNG
  10. ComBox 绑定数据库
  11. php+psr4和自动加载,php自动加载规范 PSR4 (Thinkphp)
  12. 北漂周记--第5记--拼命编程
  13. 安装MiniTools后,不能识别USB的问题
  14. SQL SERVER—修改时不允许保存修改
  15. 使用合取范式进行整数规划建模的方法
  16. 程序员高手和菜鸟的区别是什么?
  17. python打字_使用Python编写打字训练小程序
  18. 深入理解ES8的新特性SharedArrayBuffer
  19. kibana java_Kibana安装及使用说明
  20. kalman、particle filter直白理解

热门文章

  1. assign,copy,strong,weak,nonatomic的理解
  2. linux whois rpm,CentOS系统安装whois命令的方法
  3. 三角网导线平差实例_网平差三角网三边导线网.doc
  4. hadoot配置环境变量win_Windows 下Hadoop的环境变量配置
  5. python3.7游戏_python3.7+django环境搭建
  6. android动态获取输入值,Android实现动态自动匹配输入内容
  7. 【yii2】 yii框架如果控制器和方法都是多个单词组成应该怎样写请求链接
  8. 小程序导航组件navigator活学活用
  9. python 全栈开发,Day51(常用内置对象,函数,伪数组 arguments,关于DOM的事件操作,DOM介绍)...
  10. ldap数据库--ODSEE--复制协议