列表组合框控件
ListCtrl 组合框控件
引言
此控件增强了经典的 CComboBox
控件,并在其下拉列表中放置了一个 CListCtrl
,从而带来所有好处:下拉列表可以具有多列、复选框、排序等。
背景
此控件与此控件相关:CTreeComboBox,区别仅在于下拉列表中封装的控件。
Using the Code
为了使用它,此控件必须有 3 个类
CListComboBox
,派生自CComboBox
CComboListCtrl
,派生自CListCtrl
CYourComboListCtrl
,派生自CComboListCtrl
描述
CYourComboListCtrl
只是您想要使用的 CListCtrl
的自定义,但它必须从 CComboListCtrl
派生,才能应用功能。
因此,如果您想要此混合控件,只需包含 6 个文件即可,ListComboBox.h 和 cpp,ComboListCtrl.h 和 cpp,以及 CComboListCtrl
的扩展,例如 MyComboListCtrl.h 和 cpp。
将这些文件放在您的项目中后,您可以像这样轻松使用此控件
将 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- 文章发布