CLISTCTRL按时间排序的问题
我现在要实现个功能,就是我的LISTCTRL已经添加完了,数据都显示出来了,然后又一列是时间,但是存放上去是字符串吗,比如存放显示的是2012-2-27,然后我现在有一个一个按钮,点击这个按钮我要他重新按照时间排序,从最新的往下排,这个应该要怎么做,麻烦各位了
[解决办法]
VC比较麻烦,我的做法是把Item全部删除,然后按照时间顺序再加入一次Item,
[解决办法]
你可以看MFC与Windows编程,印象中是可以:
点击时间栏的标题,按时间值排序的。
不用另加按钮。
[解决办法]
//参考:
int CALLBACK ListSortCompare(LPARAM lp1,LPARAM lp2,LPARAM subItem)
{ // lp1,lp2 are the original oders. the iItem will changes
CMainFrame* pMain=(CMainFrame*)AfxGetMainWnd();// m_pMainWnd;
if(pMain->m_bRevSort)
return (pMain->m_szListData[subItem][lp2].CompareNoCase(
pMain->m_szListData[subItem][lp1]));
else
return (pMain->m_szListData[subItem][lp1].CompareNoCase(
pMain->m_szListData[subItem][lp2]));
}
////
void CHMI_manView::OnColumnclick(NMHDR* pNMHDR, LRESULT* pResult)
{
NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;
// TODO: Add your control notification handler code here
*pResult = 0;
char dir[MAX_PATH];
CMainFrame* pMain=(CMainFrame*)AfxGetMainWnd();// m_pMainWnd;
//
BOOL MyPC=pMain->GetComboPath(dir);
if(stricmp(dir,"My Computer")==0 return;// drive
//
CListCtrl& refCtrl = GetListCtrl();
int sb=pNMListView->iSubItem;
//
if(pMain->m_bRevSort) pMain->m_bRevSort=FALSE;
else pMain->m_bRevSort=TRUE;
// fast enough
refCtrl.SortItems(ListSortCompare,sb);
}