首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

CListCtrl 排序有关问题,请问,顺序老变

2012-01-30 
CListCtrl排序问题,请教,顺序老变?声明的变量intSortCol//上次排列的列号intfAsc1//正向或反向排列排列

CListCtrl 排序问题,请教,顺序老变?
声明的变量

int   SortCol;//上次排列的     列号
int   fAsc=1;   //正向或反向排列

排列CALLBACK函数

int   CALLBACK   MyCompareProc(LPARAM   lParam1,   LPARAM   lParam2,   LPARAM   lParamSort)  
{  
CListCtrl   *pListCtrl   =   (CListCtrl*)   lParamSort;  
CString   sA   =   (pListCtrl-> GetItemText(lParam1,   2));  
CString   sB   =   (pListCtrl-> GetItemText(lParam2,   2));
int   iA=atoi(sA);
int   iB=atoi(sB);
if(iA> iB)
return   -1*fAsc;
else   if(iA <iB)
return   1*fAsc;
else   if(iA=iB)
return   0;
}  

调用函数
if(   pNMLV-> iSubItem   ==   SortCol   )   //如果当前选择的和老的一样   就相反方向,否则正向
fAsc   *=-1;
else
{
fAsc=1;
SortCol   =   pNMLV-> iSubItem;
}
  m_list.SortItems(MyCompareProc,(LPARAM)(&m_list));  

[解决办法]
/*LPARAM lParam1, LPARAM lParam2 应该是指想date行的index???*/

用你上面的代码对listview排序,需要在每次排序前先将每个item的lParam参数重新设置为对应的序号才行。


[解决办法]
msdn:ms-help://MS.VSCC.v80/MS.MSDN.v80/MS.VisualStudio.v80.chs/dv_vclib/html/24a540d4-21af-48b5-abe2-77ac60ddbaa5.htm

Return Value
Nonzero if successful; otherwise zero.


注意:只有0与非0值区分.你在处理返回值上有问题

热点排行