65.9K
CodeProject 正在变化。 阅读更多。
Home

列表组合框控件

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.98/5 (14投票s)

2016年9月23日

CPOL

2分钟阅读

viewsIcon

25095

downloadIcon

1232

ListCtrl 组合框控件

引言

此控件增强了经典的 CComboBox 控件,并在其下拉列表中放置了一个 CListCtrl,从而带来所有好处:下拉列表可以具有多列、复选框、排序等。

背景

此控件与此控件相关:CTreeComboBox,区别仅在于下拉列表中封装的控件。

Using the Code

为了使用它,此控件必须有 3 个类

  • CListComboBox,派生自 CComboBox
  • CComboListCtrl,派生自 CListCtrl
  • CYourComboListCtrl,派生自 CComboListCtrl

描述

CYourComboListCtrl 只是您想要使用的 CListCtrl 的自定义,但它必须从 CComboListCtrl 派生,才能应用功能。

因此,如果您想要此混合控件,只需包含 6 个文件即可,ListComboBox.hcppComboListCtrl.hcpp,以及 CComboListCtrl 的扩展,例如 MyComboListCtrl.hcpp

将这些文件放在您的项目中后,您可以像这样轻松使用此控件

CComboBox 控件放在您的表单上,但它必须是 CListComboBox 类型,而不是仅 CComoboBox

//
// In your view header

#include "ListComboBox.h"
#include "MyComboListCtrl.h"

// and

 CListComboBox m_Combo2;
 CMyComboListCtrl* m_pListCtrl2;

// in your cpp file

CTestListComboView::CTestListComboView()
 : CFormView(CTestListComboView::IDD)
 ,m_pListCtrl2(NULL)
{
 m_pListCtrl2 = new CMyComboListCtrl;
 m_Combo2.SetListCtrl(m_pListCtrl2);
}

然后,您可以像您想要的那样处理您的 m_pListCtrl2(配置、用数据填充等)。

您可以在附带的示例项目中找到更多详细信息。

增强的 combobox 具有几种帮助使用此混合控件的方法

  • DisplayList() - 使用此方法代替原生的 ShowDopDown() 来显示下拉菜单
  • SetEditText(LPCTSTR lpszString) - 设置编辑 combobox 的文本
  • SetEditItemData/GetEditItemData - 设置选定项目的 itemdata,从 CListComboBox 对象可见
  • SetListCtrl(CComboListCtrl* pListCtrl) - 将 CComboListCtrl 对象设置为下拉列表
  • IsControlActive() - 获取下拉列表的状态
  • GetDroppedWidth() / GetDroppedHeight() - 返回下拉列表的宽度和高度
  • SetDroppedWidth() / SetDroppedHeight() - 设置下拉列表的宽度和高度
  • SetEditTooltip() / GetEditTooltip() - 设置/获取编辑 combobox 的工具提示,该工具提示可能与编辑文本不同
  • GetShowTooltip() / SetShowTooltip() - 激活/停用编辑 combobox 的工具提示
  • GetShowEditTooltipOverItem() / SetShowEditTooltipOverItem() - 设置/获取编辑 combobox 的工具提示位置,是在编辑区域上方还是之上

当然,此 CComboBox 上还有其他方法可用,这使得此控件成为在需要增强的 combobox 时的一个不错的选择。

希望对您有所帮助!附言。

就我所知,我将带着有关使用此控件的新细节回来。

历史

  • 2016-09-23- 文章发布
© . All rights reserved.