如何在单击按钮时对CListCtrl
中的项目进行排序?
我在MFC
中创建了一个基于对话框的应用程序。
我将CListCtrl
控件放在我的Dialog上,并将其视图样式设置为报告类型。
我在这个列表视图中有两列。
在这里,当我点击"Sorting"
按钮时,它应该对列表中的项目进行排序。
我看到了许多与此相关的例子,但没有一个对我有用。
有人可以指导我怎么做吗?
答案 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中向我们建议。这就是我要用的。