一、创建工具栏

1、在MFC工程,找到“资源视图”界面,右键添加资源,选择Toolbar,点击新建:

2、修改工具条属性:

3、添加工具:

  新建ToolBar后,会自动生成一个工具,编辑ID后,工具条后面会自动新增一个空白的工具。

4、删除工具:

  按Delete键或者右键工具删除,都是删除工具里面的图标内容,无法真正删除工具。选中工具条中需要删除的工具,长按拖出工具条即可删除该项工具。

5、为工具添加图标:

  逐个添加工具条里面的各个工具,可以在网上下载、截图。然后在此界面右键粘贴即可。

  导入图标后,可以通过打开外部编辑器在画图工具下编辑图标。导入的每个图标记得要修改ID属性。

  注意:为工具添加图标后,一般情况无法去除工具背景色,需要利用特殊工具进行处理,后续会提到。

6、创建工具条,将创建工具条的代码添加到对应的初始化函数中即可:

BOOL CDormDlg::InitToolBar()
{
initializeFlag = TRUE; //创建ToolBar工具条
if(!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_TOOLBAR1))
{
TRACE0("Failed to Create Dialog ToolBar\n");
EndDialog(IDCANCEL);
}
CRect rcClientOld;
CRect rcClientNew; GetClientRect(rcClientOld);
RepositionBars(AFX_IDW_CONTROLBAR_FIRST,AFX_IDW_CONTROLBAR_LAST,0,reposQuery,rcClientNew); //创建位图 CImageList
HICON hIcon = NULL ;
img.Create(32,32,ILC_COLOR32 | ILC_MASK,3,3);//加载图片大小,图片格式,图片数量
COLORREF co = GetSysColor(COLOR_WINDOW); img.SetBkColor(co); hIcon =(HICON) ::LoadImage(::AfxGetInstanceHandle(),MAKEINTRESOURCE(IDI_STU_ADD),IMAGE_ICON,32,32,0);//导入添加学生图片0
img.Add(hIcon); hIcon = (HICON)::LoadImage(::AfxGetInstanceHandle(),MAKEINTRESOURCE(IDI_STU_DEL),IMAGE_ICON,32,32,0);//导入删除学生图片1
img.Add(hIcon); hIcon = (HICON)::LoadImage(::AfxGetInstanceHandle(),MAKEINTRESOURCE(IDI_STU_CHECK),IMAGE_ICON,32,32,0);//导入查询学生图片2
img.Add(hIcon); //添加按钮信息
m_toolbar.GetToolBarCtrl().SetImageList(&img);
m_toolbar.SetButtons(NULL,6); m_toolbar.SetButtonInfo(0,IDC_TOOLBAR_ADDSTD,TBSTYLE_BUTTON,0);
m_toolbar.SetButtonText(0,_T("添加学生")); m_toolbar.SetButtonInfo(1,-1,TBSTYLE_SEP,-1);
m_toolbar.SetButtonText(1,_T("")); m_toolbar.SetButtonInfo(2,IDC_TOOLBAR_DELSTD,TBSTYLE_BUTTON,1);
m_toolbar.SetButtonText(2,_T("删除学生")); m_toolbar.SetButtonInfo(3,-1,TBSTYLE_SEP,-1);
m_toolbar.SetButtonText(3,_T("")); m_toolbar.SetButtonInfo(4,IDC_TOOLBAR_CHECKSTD,TBSTYLE_BUTTON,2);
m_toolbar.SetButtonText(4,_T("查询学生")); m_toolbar.SetButtonInfo(5,-1,TBSTYLE_SEP,-1);
m_toolbar.SetButtonText(5,_T("")); //设置工具栏按钮大小
CRect rectToolBar;
m_toolbar.GetItemRect(0,&rectToolBar);
m_toolbar.SetSizes(rectToolBar.Size(),CSize(40,30));
m_toolbar.SetSizes(CSize(80,50),CSize(40,30)); m_toolbar.EnableToolTips(TRUE);
// m_toolbar.ShowWindow(SW_SHOW);
return TRUE;
}

  

7、添加工具按钮响应消息:

BEGIN_MESSAGE_MAP(CFMSTechApp, CWinApp)
ON_COMMAND(ID_DATA_MGR_EXAM, &CFMSTechApp::OnDataMgrExam)//响应命令
ON_UPDATE_COMMAND_UI(ID_DATA_MGR_EXAM, &CFMSTechApp::OnUpdateDataMgrExam)//UI状态控制
END_MESSAGE_MAP()

  

二、处理工具栏图标背景透明

1、使用辅助工具BCGToolbarEditor.exe

2、打开工具BCGToolbarEditor.exe,选择打开需要添加工具栏的项目,*.vcxproj

3、选择需要编辑的图标,导入资源图片

4、加载图标资源

5、编辑完成后,保存工具栏。重新加载MFC项目,工具栏背景即被去除掉。

6、下载链接:https://files.cnblogs.com/files/ly940120/Designer.rar

MFC 工具栏ToolBar的更多相关文章

  1. MFC工具栏的创建、设计与使用实例

    本文通过实例说明MFC工具栏的创建.设计和使用方法,包括三个demo.       demo1:创建一个工具栏 C++代码 //摘抄自MSDN demo1 (创建一个工具栏) 1.Create a t ...

  2. C++MFC编程笔记day03 MFC工具栏、状态栏、视图窗体

    MFC工具栏 相关类: CToolBarCtrl - 父类是 CWnd  封装了工具栏控件相关操作 CToolBar - 父类是CControlBar  封装了工具栏和框架窗体之间的关系 工具栏使用: ...

  3. VC MFC工具栏(CToolBar)控件

    一.工具栏 工具栏控件在控件面板里没有对应的选项(图标),但有一个工具栏控件类CToolBar,所以我们如果要创建一个工具栏控件并显示在窗口里的话,只能用代码来完成,事实上任何一种控件,都可以用代码创 ...

  4. MFC工具栏设计

    工具栏中包含了一组用于执行命令的按钮,每个按钮都用一个图标来表示.当单击某个按钮时,会产生一个相应的消息,对这个消息的处理就是按钮的功能实现.将菜单中常用的功能放置在工具栏中,这样可以方便用户操作,省 ...

  5. VC MFC工具栏(CToolBar)控件(转)

    工具栏 工具栏控件在控件面板里没有对应的选项(图标),但有一个工具栏控件类CToolBar,所以我们如果要创建一个工具栏控件并显示在窗口里的话,只能用代码来完成,事实上任何一种控件,都可以用代码创建, ...

  6. MFC 工具栏隐藏与显示

    最近在学MFC,看的是孙鑫的VC++视频,感觉还不错.在看到第九节课的时候,讲到工具栏的时候,做了个小功能:工具栏的隐藏和显示,但是有个bug就是一个悬浮的工具栏隐藏后再显示,就会变成停靠状态.这里我 ...

  7. 轻量级jquery框架之--工具栏(toolbar)

    工具栏需求: (1)要求工具栏可以通过JSON配置格式生成,这样可以从服务器端控制生成的JSON来控制UI层面的按钮状态 (2)可以自定义按钮的图标样式. (3)可以定义按钮事件,按钮事件需要支持以字 ...

  8. xadmin列表页添加自定义工具栏toolbar

    通过xadmin的Plugin实现,adminx.py中 class Link2AdminPlugin(BaseAdminPlugin): link_2_admin = False def init_ ...

  9. (转载)VC/MFC 工具栏上动态添加组合框等控件的方法

    引言 工具条作为大多数标准的Windows应用程序的 一个重要组成部分,使其成为促进人机界面友好的一个重要工具.通过工具条极大方便了用户对程序的操作,但是在由Microsoft Visual C++开 ...

随机推荐

  1. 『配置』服务器搭建 Office Online Server2016 实现文档预览

    博主有话说:这个过程我遇到了很多错误,所以出了一个错误整理文章,所以当你在配置过程中遇到了问题,可以先去这篇文章里找找!加油! 先打开我吧:https://www.cnblogs.com/pukua/ ...

  2. oracle 10g 搭建备库以及一次DG GAP的处理情况

    1.主庫全庫備份rman target/rman> backup database format '/backup/fullbak/fullbak_%U';2.用scp傳到備庫,最好是rman目 ...

  3. C语言程序设计(二) C数据类型

    第二章 C数据类型 八进制整数由数字0开头,后跟0~7的数字序列组成. 十六进制整数由数字0加字母x(或X)开头,后跟0~9,a~f(或A~F)的数字序列组成. 整型常量: 默认的int型定义为有符号 ...

  4. guava限流器RateLimiter原理及源码分析

    前言 RateLimiter是基于令牌桶算法实现的一个多线程限流器,它可以将请求均匀的进行处理,当然他并不是一个分布式限流器,只是对单机进行限流.它可以应用在定时拉取接口数据, 预防单机过大流量使用. ...

  5. 【BIM】BIMFACE中创建矢量文本[下篇]

    背景 在上一篇文章中,我们通过THREEJS创建了矢量文本,并添加到了BIMFACE场景中,但是仅仅加入到场景中并不是我们的目的,我们的目的是把这种矢量文本加到指定的构件或者空间上,以此标识该构件或空 ...

  6. mongo的聚合操作

    对图7-1所示的数据集exampledata1,使用聚合操作实现以下功能: (1)不返回_id字段,只返回age和sex字段. (2)所有age大于28的记录,只返回age和sex. (3)在$mat ...

  7. vue项目 github 上传项目并链接地址

    git init git init: 通过命令git init把这个文件夹变成Git可管理的仓库git status git status:查看当前仓库状态 git add . 这里提示你虽然把项目粘 ...

  8. Posix线程编程指南(5)

    Posix线程编程指南(5) 杨沙洲 原文地址:http://www.ibm.com/developerworks/cn/linux/thread/posix_threadapi/part5/ 杂项 ...

  9. 我成功攻击了Tomcat服务器之后

    Tomcat是一个开源的轻量级Web应用服务器,在我们平常工作过程中接触得非常多.代码也非常经典,很多人为了提升自己的技术也会去阅读学习Tomcat的源码.但正如著名诗人李白所说的:世界上本没有漏洞, ...

  10. Linux 基础篇

    本文使用系统为 :CentOS 7 1.文件操作 增: touch a.txt   #增加文件 mkdir test  # 增加目录   参数:-p 创建多级目录   ; 删: rm a.txt  # ...