MFC 工具栏ToolBar
一、创建工具栏
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的更多相关文章
- MFC工具栏的创建、设计与使用实例
本文通过实例说明MFC工具栏的创建.设计和使用方法,包括三个demo. demo1:创建一个工具栏 C++代码 //摘抄自MSDN demo1 (创建一个工具栏) 1.Create a t ...
- C++MFC编程笔记day03 MFC工具栏、状态栏、视图窗体
MFC工具栏 相关类: CToolBarCtrl - 父类是 CWnd 封装了工具栏控件相关操作 CToolBar - 父类是CControlBar 封装了工具栏和框架窗体之间的关系 工具栏使用: ...
- VC MFC工具栏(CToolBar)控件
一.工具栏 工具栏控件在控件面板里没有对应的选项(图标),但有一个工具栏控件类CToolBar,所以我们如果要创建一个工具栏控件并显示在窗口里的话,只能用代码来完成,事实上任何一种控件,都可以用代码创 ...
- MFC工具栏设计
工具栏中包含了一组用于执行命令的按钮,每个按钮都用一个图标来表示.当单击某个按钮时,会产生一个相应的消息,对这个消息的处理就是按钮的功能实现.将菜单中常用的功能放置在工具栏中,这样可以方便用户操作,省 ...
- VC MFC工具栏(CToolBar)控件(转)
工具栏 工具栏控件在控件面板里没有对应的选项(图标),但有一个工具栏控件类CToolBar,所以我们如果要创建一个工具栏控件并显示在窗口里的话,只能用代码来完成,事实上任何一种控件,都可以用代码创建, ...
- MFC 工具栏隐藏与显示
最近在学MFC,看的是孙鑫的VC++视频,感觉还不错.在看到第九节课的时候,讲到工具栏的时候,做了个小功能:工具栏的隐藏和显示,但是有个bug就是一个悬浮的工具栏隐藏后再显示,就会变成停靠状态.这里我 ...
- 轻量级jquery框架之--工具栏(toolbar)
工具栏需求: (1)要求工具栏可以通过JSON配置格式生成,这样可以从服务器端控制生成的JSON来控制UI层面的按钮状态 (2)可以自定义按钮的图标样式. (3)可以定义按钮事件,按钮事件需要支持以字 ...
- xadmin列表页添加自定义工具栏toolbar
通过xadmin的Plugin实现,adminx.py中 class Link2AdminPlugin(BaseAdminPlugin): link_2_admin = False def init_ ...
- (转载)VC/MFC 工具栏上动态添加组合框等控件的方法
引言 工具条作为大多数标准的Windows应用程序的 一个重要组成部分,使其成为促进人机界面友好的一个重要工具.通过工具条极大方便了用户对程序的操作,但是在由Microsoft Visual C++开 ...
随机推荐
- iOS围绕某点缩放或旋转的AnchorPoint的设定
经常会遇到需求,要求手势的缩放或者旋转操作,要求动作变化围绕某一个特定点,或者是两指的中心点,或者是某一个点. 这个问题首先要清晰的知道,iOS各个view的层次关系.特别是,要清除的知道,当前vie ...
- 使用 ALSAlib 播放 wav
在 ARM 2440 开发板上正常播放 16bit 44100 采样率的wav , 为了程序简单,没有判断返回值. 补充,在 ubunto 上也能正常播放. 编译方法: arm-linux-gcc ...
- 为什么java内部类访问局部变量必须声明为final?
https://blog.csdn.net/z55887/article/details/49229491 先抛出让我疑惑了很久的一个问题 编程时,在线程中使用局部变量时候经常编译器会提示:局部变量必 ...
- flask修改flask_wtf使其支持json数据的validation验证
flask默认是前后端不分离策略,前端通过flask+wtf表单来传递post,put...等数据. 现在前后端分离是趋势,那么对flask进行一定的修改,变为前后端分离,在前端页面中请求后端,那么请 ...
- Java注解 看这一篇就够了
注解 1.概念 注解:说明程序的.给计算机看的 注释:用文字描述程序的.给程序员看的 注解的定义:注解(Annotation),也叫元数据.一种代码级别的说明.它是JDK1.5及以后版本引入的一个特性 ...
- 深入解析Underscore.js源码架构
Underscore.js是很有名的一个工具库,我也经常用他来处理对象,数组等,本文会深入解析Underscore源码架构,跟大家一起学习下他源码的亮点,然后模仿他写一个简单的架子来加深理解.他的源码 ...
- Flask 之分析线程和协程
目录 flask之分析线程和协程 01 思考:每个请求之间的关系 02 threading.local 03 通过字典自定义threading.local 04 通过setattr和getattr实现 ...
- defer 链如何被遍历
去年开始写文章的第一篇就是关于 defer,名字比较文艺:<Golang 之轻松化解 defer 的温柔陷阱>,还被吐槽了.因为这篇文章,到<Go 夜读>讲了一期.不过当时纯粹 ...
- SQLServer——MASTER..spt_values
常常见到这个表,人家用得天花乱坠的. 自己select一看却莫名其妙的. 如上, 这个表主要用来保存一些枚举值, 据说是从sybase继承过来,许多函数和存储过程可以看到它的身影.也可以叫系统常量表吧 ...
- 单例模式和配置admin
单例模式和配置admin 单例模式的概念 单例模式主要目的是确保某一个类只有一个实例存在.比如,某个服务器程序的配置信息存放在一个文件中,客户端通过一个 AppConfig 的类来读取配置文件的信 ...