zoukankan      html  css  js  c++  java
  • CtrlList 排序问题。

    点击列标题进行排序。

    1,定义两个变量:
    BOOL m_iSortFlag; //用来指示本次排序是升序还是降序
    int m_iSort;//排序依据的列号

    2,为CtrlList添加事件:
    void CCardManageDlg::OnColumnclickWareTable(NMHDR* pNMHDR, LRESULT* pResult)
    {
    NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;
    // TODO: Add your control notification handler code here
      m_iSort = pNMListView->iSubItem;
    for(int i = 0;i < m_waretable.GetItemCount();i++)
    {
      m_waretable.SetItemData(i,i);//为所有行设置一个序号,排序的依据。
    }   
    m_iSortFlag > 0 ? m_iSortFlag=-1 : m_iSortFlag=1;// 确定升降序 
    m_waretable.SortItems((PFNLVCOMPARE)CompareFunc,(LPARAM)this);//发送排序信息给排序函数。

    *pResult = 0;
    }

    3,实现排序函数,此函数的功能是比较两行的大小,这里比较字符串的大小:
    int CALLBACK CompareFunc(LPARAM lParam1,LPARAM lParam2,LPARAM lParamSort)

       
    CListCtrl* pListCtrl = &(((CCardManageDlg*)lParamSort)->m_waretable); 
    CString strItem1 = pListCtrl->GetItemText(lParam1,((CCardManageDlg*)lParamSort)->m_iSort); 
    CString strItem2 = pListCtrl->GetItemText(lParam2,((CCardManageDlg*)lParamSort)->m_iSort); 
    TRACE("lParam1=%d %s compare with  lParam2  = %d %s \n",lParam1,strItem1,lParam2,strItem2); 
    return strcmp(strItem2,strItem1)*((CCardManageDlg*)lParamSort)->m_iSortFlag;//乘以iSortFlag以实现点一次换一种排序法。
    }

  • 相关阅读:
    【转载】Java嵌入Pig编程
    【转载】Pig语法进阶
    【转载】各种SQL在PIG中实现
    机器学习简易入门(三)
    机器学习简易入门(一)
    在Centos7上安装漏洞扫描软件Nessus
    R简易入门(二)
    R简易入门(一)
    Mysql主从同步(复制)
    Mysql备份与恢复
  • 原文地址:https://www.cnblogs.com/aoyihuashao/p/1623691.html
Copyright © 2011-2022 走看看