【MFC】带组合框的工具栏
00. 目录
文章目录
- 00. 目录
- 01. 案例概述
- 02. 开发环境
- 03. 关键技术
- 04. 程序设计
- 05. 秘笈心法
- 06. 源码下载
- 07. 附录
01. 案例概述
在Office软件中经常可以看到工具上有很多组合框,通过工具栏上的组合框Office可以非常方便的设置字体的大小、类型等。实例就实现带组合框的工具栏。效果如下图所示。
02. 开发环境
系统环境:Windows 10
开发环境:Visual Studio 2019
03. 关键技术
实例使用CToolBar类创建工具栏,首先通过Create方法创建工具栏后,然后使用LoadBitmap设置按钮使用的图标,使用SetButtons设置按钮使用的ID资源,接着使用GetItemRect获取指定按钮的区域,然后使用CComboBox类的Create方法在该区域内创建组合框控件。如果想改变原有按钮的区域需要使用CToolBar类SetButtonInfo方法,该方法不但可以设置工具栏按钮使用的图标索引、按钮的样式,还可以改变按钮的宽度。
SetButtonInfo方法
该方法用来设置工具栏按钮的属性信息。语法:
void SetButtonInfo( int nIndex, UINT nID, UINT nStyle, int iImage );
nIndex 按钮的索引
nID 按钮的资源ID值
nStyle 按钮的样式,有以下取值。
TBBS_BUTTON:按钮样式。
TBBS_SEPARATOR:分隔条样式。
TBBS_CHECKBOX:复选样式
TBBS_GROUP:组样式。
TBBS_CHECKGROUP:复选组样式,该样式应放在按钮组的第一位置。
iImage 设置图片索引,以及按钮的宽度
04. 程序设计
(1)新建一个基于单文档视图结构的应用程序。
(2)从CToolBar派生新类CStyleBar,并在CMainFrame类中声明该类的一个对象m_wndStyleBar。
(3)在CMainFrame类的OnCreate函数中创建工具栏,函数实现代码如下。
int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{if (CFrameWnd::OnCreate(lpCreateStruct) == -1)return -1;const int nDropHeight = 100;//创建工具栏if (!m_wndStyleBar.Create(this, WS_CHILD|WS_VISIBLE|CBRS_TOP|CBRS_TOOLTIPS|CBRS_FLYBY, 15000) ||!m_wndStyleBar.LoadBitmap(IDB_STYLES) || //加载工具栏图标!m_wndStyleBar.SetButtons(styles, sizeof(styles)/sizeof(UINT))) //为工具栏添加按钮{TRACE0("Failed to create stylebar\n");return FALSE;}m_wndStyleBar.SetButtonInfo(0, 12000, TBBS_SEPARATOR, 50); //设置指定工具栏按钮的宽度m_wndStyleBar.SetButtonInfo(1, ID_SEPARATOR, TBBS_SEPARATOR, 12); //设置指定工具栏按钮的样式CRect rect;m_wndStyleBar.GetItemRect(0, &rect); //获取指定按钮的区域rect.top = 3;rect.bottom = rect.top + nDropHeight;if (!m_wndStyleBar.m_comboBox.Create(CBS_DROPDOWNLIST|WS_VISIBLE|WS_TABSTOP,rect, &m_wndStyleBar, 12000)) //创建组合框{TRACE0("Failed to create combo-box\n");return FALSE;}return 0;
}
05. 秘笈心法
增强工具栏的创建
在工具栏上不仅可以显示组合框控件,还可以显示编辑框和标签控件,其实现的思路都是一样的,就是先生成工具栏按钮,然后获取按钮的区域,最后在该区域内创建想要创建的控件。
06. 源码下载
下载:
07. 附录
参考: 《Visual C++从入门到精通(项目案例版)》
【MFC】带组合框的工具栏相关推荐
- java组合框单位换算_Visual C++开发实战1200例(第Ⅰ卷)
第1篇 编程基础 第1章 开发环境 1.1 工程创建 实例001 如何创建基于对话框的MFC工程 实例002 如何创建基于文档视图的MFC工程 实例003 打开已存在的工程 实例004 怎样查找工程中 ...
- VS2019/MFC编程入门教程:组合框控件Combo Box
上一节讲了列表框控件ListBox的使用,本节主要讲解组合框控件Combo Box.组合框同样相当常见,例如,在Windows系统的控制面板上设置语言或位置时,有很多选项,用来进行选择的控件就是组合框 ...
- 组合框控件Combo Box和CComboBox类
本节主要讲解组合框控件Combo Box.组合框同样相当常见,例如,在Windows系统的控制面板上设置语言或位置时,有很多选项,用来进行选择的控件就是组合框控件.它为我们的日常操作提供了很多方便. ...
- MFC控件编程之组合框跟列表框
MFC控件编程之组合框跟列表框 一丶简介 如果要使用组合框跟列表框.那么就要知道.组合框列表框是最核心的东西就是索引. 索引是从0开始的. 二丶组合框列表框常用的方法 AddString(字符串) 添 ...
- MFC Group Box 组合框的简单使用 笔记
开发环境版本:Visual Studio 2010 应用程序类型:MFC application 1 组合框 Group Box作用 在MFC基于对话框的应用程序中,Group Box组合框就是将组合 ...
- 【MFC】学习笔记:常用控件之组合框(Combo Box)
01.目录 目录 01.目录 02.控件介绍 03.控件的消息通知函数 04.创建组合框控件及成员函数介绍 4.1 组合框的创建 4.2 CComboBox类的主要成员函数 05.应用实例 06.总结 ...
- VC++中combo box(组合框)控件使用说明/MFC COMBOBOX的使用
转自:不知道... Combo Box (组合框)控件很简单,可以节省空间.从用户角度来看,这个控件是由一个文本输入控件和一个下拉菜单组成的.用户可以从一个预先定义的列表里选择一个选项,同时也可以直接 ...
- MFC组合框控件总结及用法示例
Combo Box (组合框)控件很简单,可以节省空间.从用户角度来看,这个控件是由一个文本输入控件和一个下拉菜单组成的.用户可以从一个预先定义的列表里选择一个选项,同时也可以直接在文本框里面输入文本 ...
- MFC 组合框的用法大全
Combo Box (组合框)控件很简单,可以节省空间.从用户角度来看,这个控件是由一个文本输入控件和一个下拉菜单组成的.用户可以从一个预先定义的列表里选择一个选项,同时也可以直接在文本框里面输入文本 ...
最新文章
- 系统服务-----Activity服务的获取getSystemService
- JAVA中获取当前运行的类名,方法名,行数
- java制作程序启动进度窗口
- java爬取网页内容 简单例子(2)——附jsoup的select用法详解
- HIVE时间戳错误unix_timestamp时间不同环境相差8小时
- DFS应用——寻找欧拉回路
- java : nio 学习
- 大数据统计学之概率论(三)
- 失心漂亮的个人html引导页面源码
- Python体验(01)-变量、函数和基本控制语句
- 【第五课】LNMP环境的入门
- Web的测试内容和方法【转贴】
- e站host地址_ip地址基础入门知识
- 代谢组与微生物联合分析实战
- 【论文笔记】视频分类系列 Appearance-and-Relation Networks for Video Classification (ARTNet)
- TB6612电机驱动板
- RTL8152网卡Linux驱动,openwrt增加 rtl8150 USB网卡驱动支持
- 曲苑杂坛--服务启动时执行
- usb连接不上 艾德克斯电源_艾德克斯电源维修ITECH电源维修可调编程直流电源IT6726V...
- [STM32]DAC全解分析
热门文章
- 等比数列和的快速求法
- Dynamics AX 2012 R2 外部程序运行在没有AD的环境(如PDA) 调用AX服务
- 在研究的道路上到底还能走多远
- Jquery操作表单Select元素常用方法
- 怎么给mysql用户添加权限_MySQL下添加用户以及给予权限的实现
- Linux nano编辑txt文件,Linux 文本编辑器 nano 的简单使用
- Linux打开浏览器进程,Linux终端Web浏览器w3m
- HTML 常用标签演示
- 【网络流】网络流小总结
- Log4j MDC Tomcat下报异常org.apache.log4j.helpers.ThreadLocalMap