当前位置:网站首页>MFC界面开发帮助文档——BCG如何在工具栏上放置控件
MFC界面开发帮助文档——BCG如何在工具栏上放置控件
2020-11-10 10:51:00 【FILA6666】
BCGControlBar ("Business Components Gallery ControlBar")是MFC扩展库,使您可以创建具有完全自定义选项(功能区、可自定义工具栏、菜单等)以及一组专业设计的丰富Microsoft Office和Microsoft Visual Studio的应用程序 GUI控件,例如图表、日历、网格、编辑器、甘特图和许多其他控件。
BCGControlBar库拥有500多个经过全面设计、测试和充分记录的MFC扩展类。 我们的组件可以轻松地集成到您的应用程序中,并为您节省数百个开发和调试时间。
本文将为大家介绍如何在工具栏上放置各种控件,如组合框或编辑框。
例如,您要创建一个"Find" 组合框,该组合框出现在工具栏上并包含最近使用的搜索字符串。用户将能够在组合框编辑控件中输入字符串,然后按Enter键来搜索文档,或者按Escape键将焦点返回到主框架,该文档显示在CEditView - derived视图中。
以下步骤是"setup" 工作,处理组合框按钮的创建及其命令的处理:
1. 打开应用程序资源,将带有ID_EDIT_FIND命令ID的新按钮添加到所需的(IDR_MAINFRAME)工具栏,并创建具有相同ID的新菜单项。 使用ID_EDIT_FIND_COMBO命令ID将新字符串“ Find the text \ nFind”添加到字符串表中,该ID将用作find组合框按钮的命令ID。 注意ID_EDIT_FIND是CEditView处理的标准命令,因此您不需要为此命令实现特殊的处理程序,但是需要为ID_EDIT_FIND_COMBO命令实现处理程序。
2. 从CBCGPComboBox类派生一个类,我们将其命名为CFindComboBox。
3. 在CFindComboBox类中,重写PreTranslateMessage虚拟成员函数,这将使您可以首先处理WM_KEYDOWN消息并采取适当的措施。 当用户按下退出键(VK_ESCAPE)时,将焦点返回到主框架窗口。 当用户按下Enter键(VK_ENTER)时,将带有ID_EDIT_FIND_COMBO命令ID的WM_COMMAND消息发布到主框架窗口(该命令将被路由到视图)。
4. 从CBCGPToolbarComboBoxButton类派生一个类,我们将其命名为CFindComboButton。
5. CBCGPToolbarComboBoxButton的构造函数采用三个参数:按钮命令ID、按钮图像的所有和组合框样式,您应该将ID_EDIT_FIND_COMBO作为命令ID传递,并且可以将CImageHash :: GetImageOfCommand与ID_EDIT_FIND一起使用来获取图像索引。
6. 重写CBCGPToolbarComboBoxButton :: CreateCombo成员函数,在这里您应该创建CFindComboBox对象并返回指向它的指针。
7. 使用IMPLEMENT_SERIAL宏使组合按钮持久,工作区管理器会自动在Windows注册表中加载和保存按钮的状态。
8. 在您的视图中实现ID_EDIT_FIND_COMBO处理程序,使用带有ID_EDIT_FIND_COMBO ID的 CBCGPToolBar::GetCommandButtons 可以检索所有"Find"组合框按钮,由于自定义,它可以是具有相同命令ID的组合框按钮的多个副本。
9. 使用CBCGPToolBar::IsLastCommandFromButton来确定是否从我们的组合框按钮发送了 "Find"命令,如何是这样请查找文本并将搜索字符串添加到组合框中。
您应该执行以下步骤,将find组合框按钮放到工具栏上:
1. 在主框架窗口中实现BCGM_RESETTOOLBAR消息处理程序(OnToolbarReset),注意当工具栏已初始化(在应用程序启动时),或者在自定义期间重置了工具栏时,该消息就会由框架发送到主框架窗口。 无论哪种情况,都需要用 "custom" find 组合框按钮替换标准的工具栏按钮(请参阅步骤2)。
2. 在OnToolbarReset处理程序中,分析工具栏的ID(它是BCGM_RESETTOOLBAR 消息的WPARAM)。 遇到IDR_MAINFRAME工具栏时,只需使用ID_EDIT_FIND和对CFindComboButton对象的引用调用CBCGPToolBar::ReplaceButton。 注意您可以在堆栈上构造CFindComboButton对象,因为ReplaceButton复制按钮对象并维护副本。
3. 如果启用自定义,则实现 "customize"处理程序(OnViewCustomize)并创建CBCGPToolbarCustomize对话框,您必须使用ID_EDIT_FIND和对CFindComboButton对象的引用来调用 CBCGPToolbarCustomize::ReplaceButton 。 注意自定义对话框包含带有"Commands"列表框的"Commands"页面,用户可以将命令拖放在工具栏上。默认情况下,自定义对话框处理应用程序菜单并为每个类别构建标准工具栏按钮的列表。 如果在需要时不使用CBCGPToolbarButton - derived按钮替换标准工具栏按钮,则将失去派生对象提供的扩展功能。
如果您对BCGSoft的产品感兴趣,也可直接咨询“在线客服”!
版权声明
本文为[FILA6666]所创,转载请带上原文链接,感谢
https://my.oschina.net/u/3992677/blog/4710709
边栏推荐
猜你喜欢
[leetcode] 93 balanced binary tree
[paper reading notes] community oriented attributed network embedding
csdn bug5:待加
小度“破圈”提速,IoT迎来新故事
jmeter接口测试--带有token的解决方法
[论文阅读笔记] Network Embedding with Attribute Refinement
Bartender2021 realizes secure remote label printing, new year-end release
分布式文档存储数据库之MongoDB索引管理
python math类
Wu Enda's refining notes on machine learning 4: basis of neural network - Zhihu
随机推荐
寻找性能更优秀的不可变小字典
LeetCode 5561. 获取生成数组中的最大值
Overview of the most complete anomaly detection algorithm in history
微服务授权应该怎么做?
About CentOS start error: the solution of failed to start crash recovery kernel arming
C + + STL container
想花钱速学互联网行业,大概花两三个月的时间,出来好找工作吗
ASP.NET Core框架揭秘[博文汇总-持续更新]
selenium webdriver使用click一直失效问题的几种解决方法
CSDN bug8: to be added
从大专生到蚂蚁金服CTO,他写下“支付宝”第一行代码:逆风的方向,更适合飞翔!...
getIServiceManager() 源码分析
[paper reading notes] network embedding with attribute refinement
抖音Api:视频评论列表
CentOS7本地源yum配置
浅谈字节最新开源联邦机器学习平台Fedlearner
Looking for a small immutable dictionary with better performance
CSDN bug7: to be added
大专学历的我工作六年了,还有机会进大厂吗?
Understanding of learning to estimate 3D hand pose from single RGB images