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】带组合框的工具栏相关推荐

  1. java组合框单位换算_Visual C++开发实战1200例(第Ⅰ卷)

    第1篇 编程基础 第1章 开发环境 1.1 工程创建 实例001 如何创建基于对话框的MFC工程 实例002 如何创建基于文档视图的MFC工程 实例003 打开已存在的工程 实例004 怎样查找工程中 ...

  2. VS2019/MFC编程入门教程:组合框控件Combo Box

    上一节讲了列表框控件ListBox的使用,本节主要讲解组合框控件Combo Box.组合框同样相当常见,例如,在Windows系统的控制面板上设置语言或位置时,有很多选项,用来进行选择的控件就是组合框 ...

  3. 组合框控件Combo Box和CComboBox类

    本节主要讲解组合框控件Combo Box.组合框同样相当常见,例如,在Windows系统的控制面板上设置语言或位置时,有很多选项,用来进行选择的控件就是组合框控件.它为我们的日常操作提供了很多方便. ...

  4. MFC控件编程之组合框跟列表框

    MFC控件编程之组合框跟列表框 一丶简介 如果要使用组合框跟列表框.那么就要知道.组合框列表框是最核心的东西就是索引. 索引是从0开始的. 二丶组合框列表框常用的方法 AddString(字符串) 添 ...

  5. MFC Group Box 组合框的简单使用 笔记

    开发环境版本:Visual Studio 2010 应用程序类型:MFC application 1 组合框 Group Box作用 在MFC基于对话框的应用程序中,Group Box组合框就是将组合 ...

  6. 【MFC】学习笔记:常用控件之组合框(Combo Box)

    01.目录 目录 01.目录 02.控件介绍 03.控件的消息通知函数 04.创建组合框控件及成员函数介绍 4.1 组合框的创建 4.2 CComboBox类的主要成员函数 05.应用实例 06.总结 ...

  7. VC++中combo box(组合框)控件使用说明/MFC COMBOBOX的使用

    转自:不知道... Combo Box (组合框)控件很简单,可以节省空间.从用户角度来看,这个控件是由一个文本输入控件和一个下拉菜单组成的.用户可以从一个预先定义的列表里选择一个选项,同时也可以直接 ...

  8. MFC组合框控件总结及用法示例

    Combo Box (组合框)控件很简单,可以节省空间.从用户角度来看,这个控件是由一个文本输入控件和一个下拉菜单组成的.用户可以从一个预先定义的列表里选择一个选项,同时也可以直接在文本框里面输入文本 ...

  9. MFC 组合框的用法大全

    Combo Box (组合框)控件很简单,可以节省空间.从用户角度来看,这个控件是由一个文本输入控件和一个下拉菜单组成的.用户可以从一个预先定义的列表里选择一个选项,同时也可以直接在文本框里面输入文本 ...

最新文章

  1. 系统服务-----Activity服务的获取getSystemService
  2. JAVA中获取当前运行的类名,方法名,行数
  3. java制作程序启动进度窗口
  4. java爬取网页内容 简单例子(2)——附jsoup的select用法详解
  5. HIVE时间戳错误unix_timestamp时间不同环境相差8小时
  6. DFS应用——寻找欧拉回路
  7. java : nio 学习
  8. 大数据统计学之概率论(三)
  9. 失心漂亮的个人html引导页面源码
  10. Python体验(01)-变量、函数和基本控制语句
  11. 【第五课】LNMP环境的入门
  12. Web的测试内容和方法【转贴】
  13. e站host地址_ip地址基础入门知识
  14. 代谢组与微生物联合分析实战
  15. 【论文笔记】视频分类系列 Appearance-and-Relation Networks for Video Classification (ARTNet)
  16. TB6612电机驱动板
  17. RTL8152网卡Linux驱动,openwrt增加 rtl8150 USB网卡驱动支持
  18. 曲苑杂坛--服务启动时执行
  19. usb连接不上 艾德克斯电源_艾德克斯电源维修ITECH电源维修可调编程直流电源IT6726V...
  20. [STM32]DAC全解分析

热门文章

  1. 等比数列和的快速求法
  2. Dynamics AX 2012 R2 外部程序运行在没有AD的环境(如PDA) 调用AX服务
  3. 在研究的道路上到底还能走多远
  4. Jquery操作表单Select元素常用方法
  5. 怎么给mysql用户添加权限_MySQL下添加用户以及给予权限的实现
  6. Linux nano编辑txt文件,Linux 文本编辑器 nano 的简单使用
  7. Linux打开浏览器进程,Linux终端Web浏览器w3m
  8. HTML 常用标签演示
  9. 【网络流】网络流小总结
  10. Log4j MDC Tomcat下报异常org.apache.log4j.helpers.ThreadLocalMap