• VS2010 MFC中 使用CListCtrl的排序功能


       list 控件是creat的,不是拖在对话框上的。想使用CListCtrl的排序功能却犯了愁~~~

       还好找到方法,如下:

    .h文件里:afx_msg void OnLvnColumnclickList1(NMHDR *pNMHDR, LRESULT *pResult);

    .cpp文件里:

    消息映射如下:

    ON_NOTIFY(LVN_COLUMNCLICK,IDS_RECRODSWND, &CViewList::OnLvnColumnclickList1)

    具体实现:

    // 排序用的比较函数
    static int CALLBACK MyCompareProc(LPARAM lParam1, LPARAM lParam2, LPARAM lParamSort)
    {
        CString &lp1 = *((CString *)lParam1);
        CString &lp2 = *((CString *)lParam2);
        int &sort = *(int *)lParamSort;
        if (sort == 0)
        {
            return lp1.CompareNoCase(lp2);
        }
        else
        {
            return lp2.CompareNoCase(lp1);
        }
    }
    
    //排序处理代码
    void CViewList::OnLvnColumnclickList1(NMHDR *pNMHDR, LRESULT *pResult)
    {
        //获取CMainFrame对象
        static CMainFrame* pMain = (CMainFrame *)AfxGetMainWnd();
        LPNMLISTVIEW pNMLV = reinterpret_cast<LPNMLISTVIEW>(pNMHDR);
        int Length = pMain->m_wndRecDetail.m_RecordsList.GetItemCount();
        CArray<CString,CString> ItemData;
        ItemData.SetSize(Length);
        for (int i = 0; i < Length; i++)
        {
            ItemData[i] = pMain->m_wndRecDetail.m_RecordsList.GetItemText(i,pNMLV->iSubItem);
            pMain->m_wndRecDetail.m_RecordsList.SetItemData(i,(DWORD_PTR)&ItemData[i]);  //设置排序关键字
        }
        static int sort = 0;
        static int SubItem = 0;
        if (SubItem != pNMLV->iSubItem)
        {
            sort = 0;
            SubItem = pNMLV->iSubItem;
        }
        else
        {
            if (sort == 0)
            {
                sort = 1;
            }
            else
            {
                sort = 0;
            }
        }
        pMain->m_wndRecDetail.m_RecordsList.SortItems(MyCompareProc,(DWORD_PTR)&sort);//排序
        *pResult = 0;
    }
  • 相关阅读:
    Logback日志格式配置相关记录
    前后端分离验证码之cookie+redis方案
    聊一聊Swagger ui登录功能实现方案
    nginx-thinkphp5
    jmeter常用的性能测试监听器
    jvm内存
    TCP连接状态详解
    原生Javascript实现图片轮播效果
    适用于CSS2的各种运动的javascript运动框架
    JS中for循环里面的闭包问题的原因及解决办法
  • 原文地址:https://www.cnblogs.com/lxt287994374/p/3389928.html
Copyright © 2020-2023  润新知