我是在LVN_COLUMNCLICK消息里进行的排序回调函数的呼叫
void CMyDlg::OnColumnclickListPic(NMHDR* pNMHDR, LRESULT* pResult) 
{
m_lstPic.SortItems(CCAMERADlg::PicListSort, reinterpret_cast<LPARAM>(&m_lstPic));
*pResult = 0;
}// 此函数为static
int CMyDlg::PicListSort(LPARAM lParam1, LPARAM lParam2, LPARAM lParamSort)
{
CSortListCtrl* p = reinterpret_cast<CSortListCtrl*>(lParamSort);
CString s1 = p->GetItemText(lParam1, 0);
CString s2 = p->GetItemText(lParam2, 0);
return strcmp(s1,s2);
}
基本上就是按照msdn上写的 排序的时候lst里面有记录 但是跟进回调函数里发现lParam1和lParam2始终是0 没的比啊 总是同一行 为什么呢

解决方案 »

  1.   

    改乱了.. 更正一下第一个函数
    void CMyDlg::OnColumnclickListPic(NMHDR* pNMHDR, LRESULT* pResult) 
    {
    m_lstPic.SortItems(CMyDlg::PicListSort, reinterpret_cast<LPARAM>(&m_lstPic));
    *pResult = 0;
    }
      

  2.   

    你没有设置lParam,所以当然是0了
      

  3.   

    大侠帮忙
    我在msdn对SortItems函数的解释中没有看到怎样传递lParam1和lParam2
    我觉得这部分工作应该是回调函数来完成的 lst里面的记录数是无法确定的 难道要我一个一个传递lParam1和lParam2吗