//这是ListCtrl的onColumnclick事件
//m_ProjList是ListCtrl对象
//UINT m_nCmpIndex; //某个Column的Index,这列是进行排序的列
//int m_nSortFlag; //切换升序和降序,在1和-1之间切换
void CDemoDlg::OnColumnclickManaGcwjProjList(NMHDR* pNMHDR, LRESULT* pResult)
{
NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;
// TODO: Add your control notification handler code here
//对第几个Column下的字段进行排序
m_nCmpIndex = pNMListView->iSubItem;
//在升序和降序之间切换
m_nSortFlag>0? m_nSortFlag = -1: m_nSortFlag = 1;
//排序,传递一个函数指针以及对话框的指针
m_ProjList.SortItems(CompareProc, (LPARAM)this);
//排序以后重新设置在InsertItem的时候传入LVITEM结构里的lParam参数
for (int i=0; i<m_ProjList.GetItemCount(); i++)
m_ProjList.SetItemData(i, i);
*pResult = 0;
}
//回调函数,用来比较两个Item的
int CALLBACK CDemoDlg::CompareProc(LPARAM lParam1, LPARAM lParam2, LPARAM lParamSort)
{
//得到m_ProjList的指针
CListCtrl* pListCtrl = (CListCtrl*) (&((CGCWJManaDlg *)lParamSort)->m_ProjList);
CString strItem1 = pListCtrl->GetItemText(lParam1,
((CGCWJManaDlg *)lParamSort)->m_nCmpIndex);
CString strItem2 = pListCtrl->GetItemText(lParam2,
((CGCWJManaDlg *)lParamSort)->m_nCmpIndex); return strcmp(strItem2, strItem1)*(((CGCWJManaDlg *)lParamSort)->m_nSortFlag);
}
//m_ProjList是ListCtrl对象
//UINT m_nCmpIndex; //某个Column的Index,这列是进行排序的列
//int m_nSortFlag; //切换升序和降序,在1和-1之间切换
void CDemoDlg::OnColumnclickManaGcwjProjList(NMHDR* pNMHDR, LRESULT* pResult)
{
NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;
// TODO: Add your control notification handler code here
//对第几个Column下的字段进行排序
m_nCmpIndex = pNMListView->iSubItem;
//在升序和降序之间切换
m_nSortFlag>0? m_nSortFlag = -1: m_nSortFlag = 1;
//排序,传递一个函数指针以及对话框的指针
m_ProjList.SortItems(CompareProc, (LPARAM)this);
//排序以后重新设置在InsertItem的时候传入LVITEM结构里的lParam参数
for (int i=0; i<m_ProjList.GetItemCount(); i++)
m_ProjList.SetItemData(i, i);
*pResult = 0;
}
//回调函数,用来比较两个Item的
int CALLBACK CDemoDlg::CompareProc(LPARAM lParam1, LPARAM lParam2, LPARAM lParamSort)
{
//得到m_ProjList的指针
CListCtrl* pListCtrl = (CListCtrl*) (&((CGCWJManaDlg *)lParamSort)->m_ProjList);
CString strItem1 = pListCtrl->GetItemText(lParam1,
((CGCWJManaDlg *)lParamSort)->m_nCmpIndex);
CString strItem2 = pListCtrl->GetItemText(lParam2,
((CGCWJManaDlg *)lParamSort)->m_nCmpIndex); return strcmp(strItem2, strItem1)*(((CGCWJManaDlg *)lParamSort)->m_nSortFlag);
}
//m_ProjList是ListCtrl对象
//UINT m_nCmpIndex; //某个Column的Index,这列是进行排序的列
//int m_nSortFlag; //切换升序和降序,在1和-1之间切换
void CDemoDlg::OnColumnclickManaGcwjProjList(NMHDR* pNMHDR, LRESULT* pResult)
{
NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;
// TODO: Add your control notification handler code here
//对第几个Column下的字段进行排序
m_nCmpIndex = pNMListView->iSubItem;
//在升序和降序之间切换
m_nSortFlag>0? m_nSortFlag = -1: m_nSortFlag = 1;
//排序,传递一个函数指针以及对话框的指针
m_ProjList.SortItems(CompareProc, (LPARAM)this);
//排序以后重新设置在InsertItem的时候传入LVITEM结构里的lParam参数
for (int i=0; i<m_ProjList.GetItemCount(); i++)
m_ProjList.SetItemData(i, i);
*pResult = 0;
}
//回调函数,用来比较两个Item的
int CALLBACK CDemoDlg::CompareProc(LPARAM lParam1, LPARAM lParam2, LPARAM lParamSort)
{
//得到m_ProjList的指针
CListCtrl* pListCtrl = (CListCtrl*) (&((CDemoDlg *)lParamSort)->m_ProjList);
CString strItem1 = pListCtrl->GetItemText(lParam1,
((CDemoDlg *)lParamSort)->m_nCmpIndex);
CString strItem2 = pListCtrl->GetItemText(lParam2,
((CDemoDlg *)lParamSort)->m_nCmpIndex); return strcmp(strItem2, strItem1)*(((CDemoDlg *)lParamSort)->m_nSortFlag);
}