typedef struct tagSortItemlParam{
long lProductID;
int nIndex;
}SortItemlParam;
/////////////////////////////////////////////////////////////////////////////
//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.
int CALLBACK CompareFunc(LPARAM lParam1, LPARAM lParam2, LPARAM lParamSort)
{
int result = 0;
BYTE SortType = (CNewListCtrl::m_pOuter)->m_SortType[lParamSort];
switch(SortType & 0x7F)
{
case LVS_SORTSTRING:
result = (CNewListCtrl::m_pOuter)->CompareString(lParam1,lParam2,lParamSort);
break;
case LVS_SORTINTEGER:
result = (CNewListCtrl::m_pOuter)->CompareNumber(lParam1,lParam2,lParamSort);
break;
case LVS_SORTDECIMAL:
result = (CNewListCtrl::m_pOuter)->CompareNumber(lParam1,lParam2,lParamSort);
break;
case LVS_SORTDATE:
result = (CNewListCtrl::m_pOuter)->CompareDate(lParam1,lParam2,lParamSort);
}
return SortType & 0x80 ? result : -result;
}
int CNewListCtrl::CompareString(LPARAM lParam1, LPARAM lParam2,LPARAM lParamSort)
{
CString string1 = GetItemText( ( (tagSortItemlParam*)lParam1 )->nIndex,lParamSort );
CString string2 = GetItemText( ( (tagSortItemlParam*)lParam2 )->nIndex,lParamSort );
int result = string1.Compare(string2);
return result;
}