Visual Studio .NET 2002Visual C++ 7.1Visual Studio 6Visual C++ 7.0Visual Studio .NET 2003Visual C++ 6.0Windows XPMFC中级开发Visual StudioWindowsC++
CTreeComboBox:支持XML的多行树形组合框






4.52/5 (9投票s)
2004年8月26日
2分钟阅读

91896

3454
这个类实现了一个组合框,它从 XML 文件中读取数据,将树形结构显示为下拉窗口,并支持多选。
引言
这篇文章介绍了 CTreeComboBox
,它实际上应该被称为 CIconMultilineXmlTreeComboBox
。
它是一个派生自 CButton
的类,具有两个主要功能
- XML 文件支持:控件将树形控件显示为下拉窗口。树形控件从 XML 文件加载其数据!
- 多行编辑框:组合框的编辑框可以具有“多行”样式,以便它可以支持从树中选择多个项目!
其他功能包括
- 多行版本的项目排序。
- 树形控件和控件的单行版本都支持图标。
使用代码
在对话框中放置一个所有者绘制的按钮(例如,IDC_MYCOMBO
)。
为控件声明一个成员变量。
CTreeComboBox m_mycombo;
将其分配给按钮(在对话框的 DoDataExchange
方法中)。
DDX_Control(pDX, IDC_MYCOMBO, m_mycombo);
加载一个 XML 文件
m_mycombo.LoadXml("countries.xml");
甚至更好,加载一个 XML 文件和一个包含树的图像列表的位图。
m_mycombo.LoadXml("countries.xml",IDB_TREE);
就是这样! 如果您想获取您选择的数据,请声明一个 CString
变量
CString m_text;
并将其分配给控件(在对话框的 DoDataExchange
方法中)。
DDX_Text(pDX, IDC_MYCOMBO, m_text);
备注
如果按钮的高度大于 32,则组合框将自动变为多行,否则它将是一个正常的单行组合框。
位图的第一个图标,充当图像列表,被该类用作文件夹图标。第二个图标用于展开的文件夹。第三个用于树的叶子。叶子的图标也显示在控件的单行版本的编辑框中。
该控件的多行版本支持对选定项目进行字母排序。您可以使用方法 EnableSort(BOOL)
启用或禁用此功能。
致谢
树形支持基于 Dennis Howard 和 Hai Ha 的基于树的组合框。
XML 文档处理的代码由 Pablo van der Meer 编写。
历史
2004 年 8 月 5 日:第一个版本。