CListCtrl排序问题
int CListCtrlDlg::MyCompareProc(LPARAM lParam1, LPARAM lParam2, LPARAM lParamSort)
{
int row1=(int)lParam1;
int row2=(int)lParam2;
CListCtrl *lc=(CListCtrl*)lParamSort;
CString lp1=lc->GetItemText(row1,sort_column);
CString lp2=lc->GetItemText(row2,sort_column);
if(sort_column<2)
{
if(method)
{
method=FALSE;
return strcmp((char*)(LPCTSTR)lp1,(char*)(LPCTSTR)lp2);
}
else
{
method=TRUE;
return strcmp((char*)(LPCTSTR)lp1,(char*)(LPCTSTR)lp2);
}
}
return 0;
}
为什么只是排序前2项,觉得if中应该来个循环,我想全部排序,应该怎么做,求解?
{
int row1=(int)lParam1;
int row2=(int)lParam2;
CListCtrl *lc=(CListCtrl*)lParamSort;
CString lp1=lc->GetItemText(row1,sort_column);
CString lp2=lc->GetItemText(row2,sort_column);
if(sort_column<2)
{
if(method)
{
method=FALSE;
return strcmp((char*)(LPCTSTR)lp1,(char*)(LPCTSTR)lp2);
}
else
{
method=TRUE;
return strcmp((char*)(LPCTSTR)lp1,(char*)(LPCTSTR)lp2);
}
}
return 0;
}
为什么只是排序前2项,觉得if中应该来个循环,我想全部排序,应该怎么做,求解?
...全文
相关推荐
封装好的CListCtrl排序类
封装好的CListCtrl排序类解决了这个问题,它提供了接口和内部逻辑,使得排序过程变得简单和直观。从压缩包文件名列表中我们可以推测,这个排序类可能包含以下几个关键组件:1.
vc CListCtrl排序-源程序
提供的源程序`CListCtrl_排序`应当包含了这些逻辑,你可以通过阅读和调试源代码来深入理解这个过程。在实际项目中,根据需求可能还需要考虑多线程安全、数据同步等问题,但基本的排序机制就是这样的。
排序类CListCtrl
**性能优化**: - 如果列表项数量很大,需要注意性能问题。可以考虑使用高效的排序算法,如快速排序或归并排序,避免不必要的遍历。
CListCtrl子项高亮,可编辑
用户可以根据一列或多列的值对子项进行升序或降序排序。5. **注意事项**: - 要注意处理焦点问题,确保在编辑结束后,焦点正确返回到CListCtrl,否则可能影响用户的交互体验。
clistctrl导入EXECL
**格式化和显示**:为了保持与Excel原始格式的一致性,可能需要对CListCtrl进行定制,例如设置字体、颜色、背景等,以匹配Excel的样式。还可以添加图标、自定义列宽和排序功能。5.


界面
