【MFC】工具栏按钮多选效果本
00. 目录
文章目录
- 00. 目录
- 01. 案例概述
- 02. 开发环境
- 03. 关键技术
- 04. 程序设计
- 05. 秘笈心法
- 06. 源码下载
- 07. 附录
01. 案例概述
多选效果就是指工具栏按钮有按下的效果,这种按钮再次按动时才能弹起,不具备自动弹起的功能。多选效果在应用软件中经常遇到,例如WORD软件中,文本是否具有粗体、斜线和下划线的效果,通过工具栏按钮的多选效果可以一目了然,给用户带来便捷。按钮效果如下图所示。
温馨提示
工具栏中的按钮与消息处理函数映射好之后才可以使用,否则是灰色的按钮。
02. 开发环境
系统环境:Windows 10
开发环境:Visual Studio 2019
03. 关键技术
同实现工具栏按钮单选效果的方法相同,多选效果任然通过类CToolBar的SetButtonInfo方法实现,只要将nStyle参数的取值设置为TBBS_CHECKBOX,工具栏上的按钮就具有多选效果了。
04. 程序设计
(1)新建一个基于单文档视图结构的应用程序。
(2)在CMainFrame类中声明一个CToolBar对象和CImageList对象。
protected: // 控件条嵌入成员//CToolBar m_wndToolBar;CStatusBar m_wndStatusBar;CToolBar m_ToolBar;CImageList m_ImageList;int m_PosY = 0;
(3)在CMainFrame类的OnCreate函数中创建工具栏,函数实现代码如下。
int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{if (CFrameWnd::OnCreate(lpCreateStruct) == -1)return -1;if (!m_ToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | CBRS_FLOATING | WS_VISIBLE | CBRS_ALIGN_TOP | TBSTYLE_FLAT)){TRACE0("未能创建工具栏\n");return -1; // 未能创建}//创建图像列表m_ImageList.Create(32, 32, ILC_COLOR32 | ILC_MASK, 0, 0);CString strPath;HICON hIcon;for (int i = 1; i < 10; i++){strPath.Format(TEXT(".\\res\\toolbar\\%02d.ico"), i);hIcon = (HICON)LoadImage(NULL, strPath, IMAGE_ICON, 32, 32, LR_LOADFROMFILE);m_ImageList.Add(hIcon);}//设置工具栏按钮m_ToolBar.SetButtons(NULL, 9);//设置工具栏按钮样式集资源IDm_ToolBar.SetButtonInfo(0, ID_ADDDATA, TBBS_CHECKBOX, 0);m_ToolBar.SetButtonText(0, TEXT("优化"));m_ToolBar.SetButtonInfo(1, ID_UPDATEDATA, TBBS_CHECKBOX, 1);m_ToolBar.SetButtonText(1, TEXT("调试"));m_ToolBar.SetButtonInfo(2, ID_DELETEDATA, TBBS_CHECKBOX, 2);m_ToolBar.SetButtonText(2, TEXT("平台"));m_ToolBar.SetButtonInfo(3, ID_FIRSTDATA, TBBS_CHECKBOX, 3);m_ToolBar.SetButtonText(3, TEXT("编码"));m_ToolBar.SetButtonInfo(4, ID_PREVIOUSDATA, TBBS_CHECKBOX, 4);m_ToolBar.SetButtonText(4, TEXT("语言"));m_ToolBar.SetButtonInfo(5, ID_NEXTDATA, TBBS_CHECKBOX, 5);m_ToolBar.SetButtonText(5, TEXT("移植"));m_ToolBar.SetButtonInfo(6, ID_LASTDATA, TBBS_CHECKBOX, 6);m_ToolBar.SetButtonText(6, TEXT("双核"));m_ToolBar.SetButtonInfo(7, ID_SAVEDATA, TBBS_CHECKBOX, 7);m_ToolBar.SetButtonText(7, TEXT("64位"));m_ToolBar.SetButtonInfo(8, ID_CANCELDATA, TBBS_CHECKBOX, 8);m_ToolBar.SetButtonText(8, TEXT("内存"));if (!m_wndStatusBar.Create(this)){TRACE0("未能创建状态栏\n");return -1; // 未能创建}m_wndStatusBar.SetIndicators(indicators, sizeof(indicators)/sizeof(UINT));//设置工具栏按钮大小m_ToolBar.GetToolBarCtrl().SetButtonSize(CSize(60, 55));m_ToolBar.GetToolBarCtrl().SetImageList(&m_ImageList);m_PosY = 80;return 0;
}
(4)设置工具栏按钮和处理函数映射
BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd)ON_WM_CREATE()ON_COMMAND_RANGE(ID_ADDDATA, ID_ADDDATA + 9, OnMenuClick)
END_MESSAGE_MAP()void CMainFrame::OnMenuClick(UINT nItemID)
{CString str, strResult;CDC* pDC = GetDC();m_ToolBar.GetButtonText(nItemID - ID_ADDDATA, str);strResult = TEXT("您选择了: " + str);pDC->TextOutW(10, m_PosY, strResult);m_PosY += 20;}
05. 秘笈心法
复选按钮状态的记录
对于选中的复选按钮应使用布尔变量进行记录,每一个按钮对应一个布尔变量,最后通过对布尔变量的判断可以得到哪些按钮已经被按下,如果两个复选按钮不能同时按下,此时就可以进行判断。
06. 源码下载
下载:【MFC】工具栏按钮多选效果本.rar
07. 附录
【MFC】工具栏按钮多选效果本相关推荐
- 【MFC】工具栏按钮的热点效果
00. 目录 文章目录 00. 目录 01. 案例概述 02. 开发环境 03. 关键技术 04. 程序设计 05. 秘笈心法 06. 源码下载 07. 附录 01. 案例概述 工具栏按钮的热点效果可 ...
- 【MFC】CMenu实现菜单栏/工具栏、工具栏前勾选效果、菜单文本动态调整
[MFC]CMenu实现菜单栏/工具栏.工具栏前勾选效果.菜单文本动态调整 说明 菜单栏/工具栏的创建 添加菜单栏/工具栏 工具栏前勾选效果 菜单文本动态调整 其他 说明 主要介绍该如何加载菜单栏.工 ...
- 【MFC】工具栏按钮单选效果
00. 目录 文章目录 00. 目录 01. 案例概述 02. 开发环境 03. 关键技术 04. 程序设计 05. 秘笈心法 06. 源码下载 07. 附录 01. 案例概述 Visual C++在 ...
- 【MFC】工具栏按钮追加显示文本
00. 目录 文章目录 00. 目录 01. 案例概述 02. 开发环境 03. 关键技术 04. 程序设计 05. 秘笈心法 06. 源码下载 07. 附录 01. 案例概述 工具栏中的按钮并不一定 ...
- Flutter实战视频-移动电商-60.购物车_全选按钮的交互效果制作
60.购物车_全选按钮的交互效果制作 主要做全选和复选框的这两个功能 provide/cart.dart 业务逻辑写到provide里面 先持久化取出来字符串,把字符串编程list.循环list ca ...
- VC MFC工具栏(CToolBar)控件
工具栏 工具栏控件在控件面板里没有对应的选项(图标),但有一个工具栏控件类CToolBar,所以我们如果要创建一个工具栏控件并显示在窗口里的话,只能用代码来完成,事实上任何一种控件,都可以用代码创建, ...
- MFC 图片按钮的实现
1.CBitmapButton 方式实现 在MFC工具栏,添加按钮到界面,然后会修改按钮的属性,设置Owner draw为true; CBitmapButton只用于添加bmp位图,其他图片会有一些兼 ...
- MFC工具栏资源及CToolBar类
MFC工具栏资源及CToolBar类: MFC工具栏: 一个工具栏是一个Windows控件,它允许用户通过点击一个按钮,而不是使用菜单执行窗体上的一些行动. 1.工具栏提供了一组方便的按钮,通过将最易 ...
- angular点击按钮弹出页面_Axure RP8:如何做出点击按钮切换页面效果?
如何利用Axure RP8做出点击按钮切换页面效果?一起来文中看看~ 先来看一下页面的效果图:点击不同的按钮,切换不同的页面.(是web端和手机端都很常见的交互效果) 实现这一效果大致要分为三个步骤: ...
最新文章
- Python模块-创建和执行程序(或者脚本)
- 读书笔记:理论生态学原理及应用(一)——合作的机制
- JVM判断对象是否已死?
- ubuntu下安装wine
- 异常记录-No module named ‘numpy.core._multiarray_umath
- python爬虫招聘-Python爬虫抓取智联招聘(基础版)
- ecshop简单三部实现导航分类二级菜单
- Jmeter 在 beanshell 脚本中写日志
- 01_什么是one-hot编码、one-hot编码过程详解、为什么需要one-hot编码?one-hot编码的优缺点、使用sklearn中的API举例
- JQuery常用功能的性能优化
- 已知两点坐标如何快速增加其他坐标_「测绘精选」坐标转换概述
- 必须使用初始化列表的情况
- html 动物特效,分享9款用HTML5/CSS3制作的动物人物动画,
- linux export 生效_Linux之提高命令行的工作效率
- Dubbo原理和源码解析之服务暴露
- OpenCV C++案例实战二十《银行卡号识别》
- iOS悬浮、可拖动、自动吸附屏幕边缘的按钮制作
- ubuntu安装aircrack-ng/reaver/minidwep-gtk用来跑pin
- Md5是什么?MD5怎么校验?Md5校验工具怎么用?
- android wp模拟器,玩家必看,WP8 ROM模拟器游戏图文教程
热门文章
- 数据结构(二):线性表包括顺序存储结构(顺序表、顺序队列和顺序栈)和链式存储结构(链表、链队列和链栈)...
- 在pl/sql中使用exp/imp工具实现oracle数据导出/导入
- M2第三天DailyScrum——PM(李忠)
- Java黑皮书课后题第8章:*8.31(几何:交点)编写一个方法,返回两条直线的交点。四个点存放在4*2的二维数组points中。编写一个程序,提示用户输入4个点,并显示交点
- Java黑皮书课后题第7章:**7.18(冒泡排序)使用冒泡排序算法编写一个排序方法。编写一个测试程序,读取10个double型的值,调用这个方法,然后显示排序好的数字
- 课程设计---停车场管理系统
- Vuex新手的理解与使用
- 【转载】JAVAEE之内置对象和属性范围
- java虚拟机 第二章Java内存区域与内存溢出异常
- 从 0 到 1 实现 React 系列 —— 2.组件和 state|props