//初始化数据 BOOL CSort_in_list_ctrlDlg::OnInitDialog() { CDialog::OnInitDialog(); //初始化ListCtrl中数据列表 m_listTest.InsertColumn(0,"姓名"); m_listTest.InsertColumn(1,"年龄"); m_listTest.SetColumnWidth(0,80); m_listTest.SetColumnWidth(1,80); for(int i=0;i<5;i++) { m_listTest.InsertItem(i,strAllData[i].szName); char szAge[10]; sprintf(szAge,"%d",strAllData[i].iAge); m_listTest.SetItemText(i,1,szAge); //设置每项的ItemData为数组中数据的索引 //在排序函数中通过该ItemData来确定数据 m_listTest.SetItemData(i,i); } return TRUE; // return TRUE unless you set the focus to a control } //处理消息 void CSort_in_list_ctrlDlg::OnColumnclickList1(NMHDR* pNMHDR, LRESULT* pResult) { NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR; //设置排序方式 if( pNMListView->iSubItem == m_listTest.m_nSortedCol ) m_listTest.m_fAsc = !m_listTest.m_fAsc; else { m_listTest.m_fAsc = TRUE; m_listTest.m_nSortedCol = pNMListView->iSubItem; } //调用排序函数 m_listTest.SortItems( ListCompare, (DWORD)&m_listTest ); *pResult = 0; }
|