MFC工具条CToolBar添加非按钮控件CComboBox

简介:
继承CWnd的类都能放到工具条上。
原理:
1.在工具条资源添加分隔符SEPARATOR
2.设置分隔符宽度
3.得到分隔符窗口CRect
4.根据分隔符窗口创建Create组合框ComboBox
新手要源码,留下邮箱。
补充:
工程大的时候,需要清理状态才能正确显示,曾被困惑好久。
App里加CleanState();或直接删除注册表。
一、打开.rc文件修改如下:
复制代码
/////////////////////////////////////////////////////////////////////////////
//
// 工具栏
//

IDR_MAINFRAME TOOLBAR   16, 16
BEGIN
    BUTTON      ID_FILE_NEW
    BUTTON      ID_FILE_OPEN
    BUTTON      ID_FILE_SAVE
    SEPARATOR
    BUTTON      ID_EDIT_CUT
    BUTTON      ID_EDIT_COPY
    BUTTON      ID_EDIT_PASTE
    SEPARATOR
    BUTTON      ID_FILE_PRINT
    BUTTON      ID_APP_ABOUT
    SEPARATOR    
    SEPARATOR    // 占位符,索引11
END
复制代码
二、MainFrm.h中添加CComboBox变量
CComboBox m_Combo;
三、MainFrm.cpp中OnCreate()添加如下代码:
复制代码
int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
     if (CFrameWnd::OnCreate(lpCreateStruct) == - 1)
         return - 1;

     if (!m_wndToolBar.CreateEx( this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP | CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) ||
        !m_wndToolBar.LoadToolBar(IDR_MAINFRAME))
    {
        TRACE0( " 未能创建工具栏\n ");
         return - 1;       //  未能创建
    }
     //  大气象 ↓
     int index =  11; //  占位符索引
     #define IDC_COMBO 1001
     int width =  100; //  占位符宽度
    m_wndToolBar.SetButtonInfo(index,IDC_COMBO,TBBS_SEPARATOR,width);

    CRect rect;
    m_wndToolBar.GetItemRect(index,&rect);
     int height =  300; //  ComboBox下拉后高度,尽量长吧。
    rect.bottom = rect.top + height;
    m_Combo.Create(WS_CHILD|WS_VISIBLE|WS_VSCROLL|CBS_SORT|CBS_DROPDOWNLIST,
        rect, this,IDC_COMBO);

    m_Combo.AddString(_T( " item0 "));
    m_Combo.AddString(_T( " item1 "));
    m_Combo.AddString(_T( " item2 "));
    m_Combo.SetCurSel( 0);
     //  大气象 ↑

     if (!m_wndStatusBar.Create( this))
    {
        TRACE0( " 未能创建状态栏\n ");
         return - 1;       //  未能创建
    }
    m_wndStatusBar.SetIndicators(indicators,  sizeof(indicators)/ sizeof(UINT));

     //  TODO: 如果不需要可停靠工具栏,则删除这三行
    m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);
    EnableDocking(CBRS_ALIGN_ANY);
    DockControlBar(&m_wndToolBar);


     return  0;
}
复制代码

url: http://greatverve.cnblogs.com/archive/2012/11/07/mfc-toolbar-combo.html 
参考:
http://www.codeproject.com/Articles/2726/Toolbars-with-embedded-Combo-Boxes 



    本文转自wenglabs博客园博客,原文链接:http://www.cnblogs.com/greatverve/archive/2012/11/07/mfc-toolbar-combo.html ,如需转载请自行联系原作者

目录
打赏
0
0
0
0
52
分享
相关文章
常见的跨平台开发框架
【10月更文挑战第25天】这些跨平台开发框架各有特点,开发者可以根据项目的具体需求、团队的技术栈和对性能、用户体验的要求等因素来选择合适的框架进行开发。
ROS2教程01 ROS2介绍
本文是ROS2(机器人操作系统的下一代)的介绍教程,内容包括ROS2的诞生背景、核心功能、特点、框架以及与ROS1的比较。文章涵盖了ROS2的通信系统、框架和工具、生态系统、全球性社区支持、完全开源、跨平台特性、多机协同能力、实时系统支持和更强的稳定性。此外,还提供了ROS2架构的详细介绍资源链接,适合对ROS2感兴趣的读者学习和了解。
343 1
|
10月前
|
操作系统中的窗口焦点和事件的影响
操作系统中的窗口焦点和事件的影响
143 0
|
10月前
|
OpenCV(三十四):轮廓外接最大、最小矩形和多边形拟合
OpenCV(三十四):轮廓外接最大、最小矩形和多边形拟合
697 0
Docker中MySQL和WordPress的常见问题及解决方法
Docker是一个开源的容器平台,可以让你快速地开发和部署应用程序。在使用Docker时可能会遇到一些关于MySQL和WordPress的问题,例如连接错误或空响应。本文将介绍两个常见的问题及其解决方法,以及如何使用Apache HttpComponents进行带有NTLM认证的HTTP请求
544 0
Docker中MySQL和WordPress的常见问题及解决方法
阿里技术专家详解DDD系列 第四讲 - 领域层设计规范
在一个DDD架构设计中,领域层的设计合理性会直接影响整个架构的代码结构以及应用层、基础设施层的设计。但是领域层设计又是有挑战的任务,特别是在一个业务逻辑相对复杂应用中,每一个业务规则是应该放在Entity、ValueObject 还是 DomainService是值得用心思考的,既要避免未来的扩展性差,又要确保不会过度设计导致复杂性。
【Qt】QTextEdit 回到顶部
如何使 QTextEdit 回滚到顶部,显示最开始的内容
408 0
【Qt】QTextEdit 回到顶部
Qt编写自定义控件60-声音波形图
一、前言 这个控件源自于一个音乐播放器,在写该音乐播放器的时候,需要将音频的数据转换成对应的频谱显示,采用的fmod第三方库来处理(fmod声音系统是为游戏开发者准备的革命性音频引擎,非常强大和牛逼),fmod负责拿到音频数据对应的采样频谱数据,然后传给这个控件进行绘制即可,本控件主需要专注于绘制即可,这样fmod对应封装的类专注于音频采集等处理,实现了隔离,修改和增加功能比较方便,声音波形图控件除了可以设置采样的深度以外,还支持三种数据样式展示,线条样式、柱状样式、平滑样式。
1885 0

热门文章

最新文章

AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等