mfc listcontrl 如何进行排序 c 代码实现
时间: 2023-05-20 22:07:17 浏览: 102
要实现 MFC ListControl 的排序,可以使用 LVCOLUMN 结构体的成员变量 iSubItem,指定使用哪个列进行排序,然后调用 CListCtrl::SortItems 函数实现排序。以下是 C++ 代码示例:
void SortListCtrl(CListCtrl& listCtrl, int iCol, bool bAscending)
{
// 设置排序标志
listCtrl.SetSortColumn(iCol, bAscending);
// 获取列数和行数
int iNumColumns = listCtrl.GetHeaderCtrl()->GetItemCount();
int iNumRows = listCtrl.GetItemCount();
// 排序
for (int i = 0; i < iNumRows - 1; ++i)
{
for (int j = i + 1; j < iNumRows; ++j)
{
CString strItemI = listCtrl.GetItemText(i, iCol);
CString strItemJ = listCtrl.GetItemText(j, iCol);
int iResult = strItemI.Compare(strItemJ);
if (bAscending ? iResult > 0 : iResult < 0)
{
for (int k = 0; k < iNumColumns; ++k)
{
CString strTempI = listCtrl.GetItemText(i, k);
CString strTempJ = listCtrl.GetItemText(j, k);
listCtrl.SetItemText(i, k, strTempJ);
listCtrl.SetItemText(j, k, strTempI);
}
}
}
}
}
在调用 SortListCtrl 函数时,第一个参数传入需要排序的 ListControl 控件,第二个参数指定使用哪个列排序,第三个参数指定是否升序。
阅读全文