开发者论坛

 找回密码
 注册 (请使用非IE浏览器)
查看: 6797|回复: 0

MFC界面开发帮助文档——BCG如何在工具栏上放置控件

[复制链接]

0

精华

8

贡献

1767

赞扬

特约版主

帖子
583
软币
4524
在线时间
275 小时
注册时间
2019-2-21
发表于 2020-11-10 10:28:32 | 显示全部楼层 |阅读模式
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的产品感兴趣,也可直接咨询“在线客服”!

回复

使用道具 举报

Archiver|手机版|小黑屋|开发者网 ( 苏ICP备08004430号-2 )
版权所有:南京韵文教育信息咨询有限公司

GMT+8, 2024-3-19 12:48

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表