单击按钮时如何对`CListCtrl`中的项进行排序?

时间:2016-06-01 06:10:32

标签: mfc

如何在单击按钮时对CListCtrl中的项目进行排序?

我在MFC中创建了一个基于对话框的应用程序。

我将CListCtrl控件放在我的Dialog上,并将其视图样式设置为报告类型。 我在这个列表视图中有两列。

在这里,当我点击"Sorting"按钮时,它应该对列表中的项目进行排序。 我看到了许多与此相关的例子,但没有一个对我有用。

有人可以指导我怎么做吗?

3 个答案:

答案 0 :(得分:1)

我假设您在编写"排序按钮"。

时表示列标题

您可能忘记将其放入对话框的消息地图中:

ON_NOTIFY(LVN_COLUMNCLICK, IDC_LIST1, OnColumnclickList1)

IDC_LIST1是列表控件的ID,代码中可能有所不同。

你对MFC有点熟悉吗?如果没有,您应该遵循网络上提供的众多教程之一。

答案 1 :(得分:1)

我会使用CMFCListCtrl。它更容易,因为它内置排序功能,你只需要提供一个功能与比较项算法进行排序。我成功地使用了它。您必须覆盖从OnCompareItems派生的类的CMFCListCtrl。我还建议您在创建列表后拨打EnableMarkSortedColumn();

答案 2 :(得分:0)

CListCtrl 有一个SortItems方法。

您需要做的就是将比较功能作为参数提供给它。

我对列表控件的内容了解不多,所以我无法真正为您提供更多信息。

请阅读并扩展您的问题,并提供示例代码以及需要对哪些列进行排序的详细信息,我可以提供更多帮助。

如果单元格的内容只是文本,那么我通常只返回值:

return Value1.CollateNoCase(Value2);

互联网上也有很多教程。例如:

http://www.codeproject.com/Articles/27774/CListCtrl-and-sorting-rows

事实上,该教程在SortItemsEx中向我们建议。这就是我要用的。