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

排序列表控件

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.45/5 (60投票s)

2001年9月7日

2分钟阅读

viewsIcon

508548

downloadIcon

5798

一个带有内置排序功能的列表控件,以及一种更简单的方法来添加列和行

Sample Image - screenshot.jpg

引言

这为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 编写的

© . All rights reserved.