使用CListCtrl :: InsertItem()排序问题

时间:2017-03-28 03:03:16

标签: windows visual-c++ mfc

我正在使用VS2015开发并需要将项插入到CListCtrl对象中。我使用InsertItem()在列表的末尾添加新项。以下是我的代码

int nIdx = m_SessionTimesListCtrl.InsertItem(
            m_SessionTimesListCtrl.GetItemCount(), IFMT("%s/%s/%s", getTime(), getWeekDay(), getTimeZone()));

我打算在下面列出

03:00:00 / MON / US

17:00:00 / TUS / US

17:00:00 / WED / US

17:00:00 / THU / US

然而,我得到了这个清单

03:00:00 / MON / US

17:00:00 / THU / US

17:00:00 / TUS / US

17:00:00 / WED / US

唯一的解释是CListCtrl排序输入despites我给它插入索引。

我检查了我的资源文件,并且没有使用任何排序属性。

CONTROL         "",IDC_LIST_SESSION_TIMES,"SysListView32",LVS_REPORT | LVS_SINGLESEL | LVS_ALIGNLEFT | WS_BORDER | WS_TABSTOP,7,7,152,58

所以,我的问题是如何禁用CListCtrl的自动排序?

1 个答案:

答案 0 :(得分:3)

当需要以可排序的方式显示项目时,通常使用LVS_REPORT样式。使用此样式可能会导致列表控件具有CHeaderCtrl,可以单击该列表控件对列表项进行排序。

如果不需要排序,并且如果不需要显示列标题,则可能不希望使用LVS_REPORT样式。选择类似LVS_LIST样式的内容。

如果需要列标题,但不需要排序,您可能希望通过执行以下操作来禁用控件的排序属性:

m_SessionTimesListCtrl.ModifyStyle(LVS_SORTASCENDING|LVS_SORTDESCENDING, 0);