Files
SimpleRemoter/server/2015Remote/SortListCtrl.cpp
2025-06-09 03:36:10 +08:00

35 lines
926 B
C++

#include "StdAfx.h"
#include "SortListCtrl.h"
BEGIN_MESSAGE_MAP(CSortListCtrl, CListCtrl)
ON_NOTIFY_REFLECT(LVN_COLUMNCLICK, CSortListCtrl::OnLvnColumnclick)
END_MESSAGE_MAP()
int CALLBACK ListCompare(LPARAM lParam1, LPARAM lParam2, LPARAM lParamSort)
{
CSortListCtrl* This = (CSortListCtrl*)lParamSort;
CString item1 = This->GetItemText(lParam1, This->m_nSortedCol);
CString item2 = This->GetItemText(lParam2, This->m_nSortedCol);
int asc = This->m_bAsc ? 1 : -1;
int ret = item1.Compare(item2);
return ret * asc;
}
void CSortListCtrl::OnLvnColumnclick(NMHDR *pNMHDR, LRESULT *pResult)
{
LPNMLISTVIEW pNMLV = reinterpret_cast<LPNMLISTVIEW>(pNMHDR);
if(pNMLV->iSubItem == m_nSortedCol) {
m_bAsc = !m_bAsc;
} else {
m_bAsc = TRUE;
m_nSortedCol = pNMLV->iSubItem;
}
SortItemsEx(ListCompare, (DWORD_PTR)this);
UpdateData(FALSE);
*pResult = 0;
}