彩票走势图

logo BCGControlBar 中文文档
文档彩票走势图>>BCGControlBar 中文文档>>如何在工具栏上放置控件

如何在工具栏上放置控件


立即下载BCGControlBar Professional Edition for MFC

本文解释了如何在工具栏上放置各种控件,如组合框或编辑框。

例如,您想要创建一个“查找”组合框,它出现在工具栏上并包含最近使用的搜索字符串。用户将能够在组合框编辑控件中键入字符串,然后按 Enter 键搜索文档或按退出键将焦点返回到主框架,该文档显示在CEditView 派生视图中。

以下步骤是“设置”工作,涉及组合框按钮的创建及其命令的处理:

  1. 打开应用程序资源,将具有ID_EDIT_FIND命令ID的新按钮添加到所需的工具栏(IDR_MAINFRAME),并创建具有相同ID的新菜单项。添加一个新的字符串“查找文本\nFind”与ID_EDIT_FIND_COMBO命令ID的字符串表,此ID将用作查找组合框按钮的命令ID。请注意,ID_EDIT_FIND是CEditView处理的标准命令,因此不需要为该命令实现特殊的处理程序,但是需要为ID_EDIT_FIND_COMBO命令实现处理程序。
  2. 从CBCGPComboBox类派生一个类,命名为CFindComboBox。
  3. 在CFindComboBox类中覆盖PreTranslateMessage虚拟成员函数,这将允许您首先处理WM_KEYDOWN消息并采取适当的操作。当用户按下escape键(VK_ESCAPE)时,将焦点返回到主框架窗口,当用户点击回车键(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处理程序。使用CBCGPToolBar::GetCommandButtons与ID_EDIT_FIND_COMBO ID检索所有find组合框按钮。由于自定义,它可以是具有相同命令ID的组合框按钮的多个副本。
  9. 使用CBCGPToolBar::IsLastCommandFromButton来确定“查找”命令是否从组合框按钮发送,如果是,则查找文本并将搜索字符串添加到组合框中。

您应该执行以下步骤将查找组合框按钮放到工具栏中:

  1. 在主框架窗口中实现BCGM_RESETTOOLBAR消息处理器(OnToolbarReset),请注意,当工具栏被初始化(在应用程序启动时)或工具栏在自定义期间被重置时,框架将此消息发送到主框架窗口。无论哪种情况,您都需要用“自定义”查找组合框按钮替换标准工具栏按钮。
  2. 在OnToolbarReset处理程序中分析工具栏的ID(它是BCGM_RESETTOOLBAR消息的WPARAM)。当您遇到IDR_MAINFRAME工具栏时,只需使用ID_EDIT_FIND和对CFindComboButton对象的引用调用CBCGPToolBar::ReplaceButton。请注意。您可以在堆栈上构造一个CFindComboButton对象,因为replacebutton复制按钮对象并维护该副本。
  3. 如果您启用定制,您实现“定制”处理程序(OnViewCustomize)并创建CBCGPToolbarCustomize对话框。你必须用ID_EDIT_FIND和CFindComboButton对象的引用来调用CBCGPToolbarCustomize::ReplaceButton。请注意。自定义对话框包含“Commands”页面和“Commands”列表框。用户可以将命令拖放到工具栏上。默认情况下,自定义对话框处理应用程序菜单,并为每个类别构建标准工具栏按钮列表。如果不在需要时用CBCGPToolbarButton派生的按钮替换标准工具栏按钮,则将失去派生对象提供的扩展功能。
扫码咨询


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP