工控编程吧
标题: 上位机MFC如何在列表控件中排序表项 [打印本页]
作者: qq263946146 时间: 2019-7-29 13:13
标题: 上位机MFC如何在列表控件中排序表项
排序对应的是列表框的成员函数SortItems。
当用户点击列表框列表头时,会触发消息LVN_COLUMNCLICK。
我们可以处理此消息的函数来实现排序。
例如 关联了函数ON_NOTIFY(LVN_COLUMNCLICK, IDC_LIST2, OnColumnclickList2)
在函数OnColumnclickList2中,我们调用 SortItems为实现排序。此函数要一个回调函数。
- void CGkbc8Dlg::OnColumnclickList2(NMHDR* pNMHDR, LRESULT* pResult)
- {
- NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;
- // TODO: Add your control notification handler code here
- //排序表项
- m_ctrlList.SortItems(CompareFunc, LPARAM(&m_ctrlList));
-
- *pResult = 0;
- }
复制代码 下面是回调函数
- int CALLBACK CompareFunc(LPARAM lParam1, LPARAM lParam2, LPARAM lParamSort)
- {
- //获得列表控件
- CListCtrl* pListCtrl = (CListCtrl*)lParamSort;
- CString strItem1 = pListCtrl->GetItemText(lParam1, 0);
- CString strItem2 = pListCtrl->GetItemText(lParam2, 0);
- return strcmp(strItem2, strItem1);
- }
复制代码 我们也提供一个例程供大家下载参考
例程也是在添加列表框控件,关联一个控件变量后,初始化设置了此变量
- AfxOleInit();
- //设置列表控件的报表显示方式
- m_ctrlList.ModifyStyle(LVS_ICON | LVS_SMALLICON | LVS_LIST, LVS_REPORT);
- //在列表控件中插入列
- for (int n = 0; n < 4; n++)
- {
- CString strColumnHeading = _T("");
- strColumnHeading.Format(_T("Column %d"), n);
- m_ctrlList.InsertColumn(n, strColumnHeading, LVCFMT_LEFT, 100);
- }
- //在列表控件中插入项
- for (int m = 0; m < 10; m++)
- {
- CString strItem = _T("");
- strItem.Format("Item %d", m);
- m_ctrlList.InsertItem(m, strItem);
- //设置列表中项的文本和数据
- for (int n = 1; n < 4; n++)
- {
- CString strText = _T("");
- strText.Format(_T("SubItem %d %d"), m, n);
- m_ctrlList.SetItemText(m, n, strText);
- m_ctrlList.SetItemData(m, m);
- }
- }
- //设置列表控件的背景图片
- char c[100];
- GetModuleFileName(NULL,c,100);
- CString sName(c);
- sName= sName.Left(sName.ReverseFind('\\')+1);
- sName += "1.bmp";
- m_ctrlList.SetBkImage(sName.GetBuffer(0));
- //设置文本背景颜色为透明色
- m_ctrlList.SetTextBkColor(CLR_NONE);
- //设置列表控件整行选中
- m_ctrlList.SetExtendedStyle(LVS_EX_FULLROWSELECT);
- //设置列表控件显示网格线
- m_ctrlList.SetExtendedStyle(LVS_EX_GRIDLINES);
- //设置列表控件使用复选框
- m_ctrlList.SetExtendedStyle(LVS_EX_CHECKBOXES);
复制代码
(, 下载次数: 0)