排序列表控件






4.45/5 (60投票s)
2001年9月7日
2分钟阅读

508548

5798
一个带有内置排序功能的列表控件,以及一种更简单的方法来添加列和行
引言
这为MFC的列表控件类添加了排序功能。排序会自动处理:它将按升序或降序对文本、日期和数字进行排序,并在排序的列标题中显示相应的方向箭头。它还添加了一些其他使使用列表控件更容易的功能——设置列和添加行变得更加容易,并且它可以加载和保存列宽。
如何使用
查看示例以了解其使用方法。您需要将文件 SortListCtrl.cpp/h 和 SortHeaderCtrl.cpp/h 添加到您的项目中,然后将 CSortListCtrl
变量与您的列表控件关联(您可以使用 ClassWizard 执行此操作)。
在对话框类的 OnInitDialog
成员函数中,您可以通过调用列表控件的 SetHeadings
函数来设置列及其初始宽度,它接受一个字符串或字符串表中字符串 ID,定义列标题及其宽度。
例如:
m_ctlList.SetHeadings( _T("Name,120;Date of Birth,90;Score,50") );
添加行非常容易,您只需使用与添加的列数相同的字符串数量调用列表控件的 AddItem
函数。
例如:
m_ctlList.AddItem( _T("Mark Jackson"), _T("09/08/1974"), _T("100") );
要记住列宽,请在设置标题后调用列表控件的 LoadColumnInfo
函数,为对话框的 WM_DESTROY
消息添加处理程序,并在其中调用 SaveColumnInfo
。
实现
这真的很难实现,您的回调函数获取要比较的两行项目数据,但这有什么用呢?您需要文本来进行比较!此控件将列的文本存储在项目数据中,以便比较函数可以访问它,它还允许控件的用户像往常一样使用项目数据。
致谢
绘制标题控件中箭头的代码是由 Zafir Anjum 编写的