您的位置:首页 > 其它

控件ListCtrl 点击表头排序

2013-01-04 15:11 357 查看
//回调函数 排序(回调函数要声明为static)

int CALLBACK CSortListctrl::CompareFunc(LPARAM lParam1,LPARAM lParam2,LPARAM lParamSort)

{

CSortListctrl * p = (CSortListctrl *)lParamSort;

CString str1, str2;

int iCompRes;

str1 = p->GetItemText(lParam1, p->m_nSortedCol);

str2 = p->GetItemText(lParam2, p->m_nSortedCol);

iCompRes = str1.Compare(str2);

if (!p->m_fAsc)

return iCompRes;

else

return (iCompRes * (-1));

}

//函数 m_nSortedCol是当前选中的列 int m_nSortedCol,bool m_fAsc

void CSortListctrl::OnColumnClick(NMHDR* pNMHDR, LRESULT* pResult)

{

NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;

if (pNMListView->iSubItem == m_nSortedCol)

m_fAsc = !m_fAsc;

else

{

m_fAsc = TRUE;

m_nSortedCol = pNMListView->iSubItem;

}

int iTemCount = this->GetItemCount();

for (int i = 0; i < iTemCount; ++i)

{

this->SetItemData(i,i);

}

this->SortItems(CompareFunc, (LPARAM)(this));

*pResult = 0;

}

ON_NOTIFY_REFLECT(LVN_COLUMNCLICK, OnColumnClick)//事件
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: