我正在使用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的自动排序?
答案 0 :(得分:3)
当需要以可排序的方式显示项目时,通常使用LVS_REPORT
样式。使用此样式可能会导致列表控件具有CHeaderCtrl
,可以单击该列表控件对列表项进行排序。
如果不需要排序,并且如果不需要显示列标题,则可能不希望使用LVS_REPORT
样式。选择类似LVS_LIST
样式的内容。
如果需要列标题,但不需要排序,您可能希望通过执行以下操作来禁用控件的排序属性:
m_SessionTimesListCtrl.ModifyStyle(LVS_SORTASCENDING|LVS_SORTDESCENDING, 0);