• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >C语言 > C++ 简单实现MFC ListControl 点击列头排序

C++ 简单实现MFC ListControl 点击列头排序

作者: 字体:[增加 减小] 来源:互联网 时间:2017-05-28

通过本文主要向大家介绍了mfc listcontrol控件,mfc listcontrol排序,mfc中listcontrol,listcontrol用法,listcontrol可编辑等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

说明:

SetItemData可以为每一行绑定一个DWORD类型的变量。用GetItemData可以获得这个变量。
举个例子,假设CListCtrl中你需要显示某个数据表中的记录,该表有个流水号主键ID,一般这个ID值本身没有什么意义,用户也不需要看,因此在CListCtrl的可见列中,你不需要显示。但往往做具体查询等操作时,你又需要用这个ID来完成。这时,用SetItemData将其绑定到每一行,将非常方便,用户操作哪一行,则用GetItemData可以得到对应记录的ID,直接用来做操作,很爽。
由于绑定的是DWORD类型,因此还有一个扩展作用是绑定一个指针对象。比如这里我不再是一个ID主键了,而是需要关联一个数据结构,那么就可以把该数据结构对象的指针进行SetItemData绑定。这么做,可以省去再到一堆的数据结构数组中去查找的过程。

第一步:

定义全局变量:

int sort_column; // 记录点击的列

bool method; // 记录比较方法

</div>

第二步:

添加比较函数

// 比较函数
2staticint CALLBACK MyCompareProc(LPARAM lParam1, LPARAM lParam2, LPARAM lParamSort)
{
// 从参数中提取所需比较lc的两行数据
int row1 = (int) lParam1;
int row2 = (int) lParam2;
 CListCtrl* lc = (CListCtrl*)lParamSort;
CString lp1 = lc->GetItemText(row1,sort_column);
CString lp2 = lc->GetItemText(row2,sort_column);
 // 比较,对不同的列,不同比较,注意记录前一次排序方向,下一次要相反排序
 if (sort_column<2)
{

// int型比较
 if (method)
 return atoi(lp1)-atoi(lp2);
 else
 return atoi(lp1)-atoi(lp1);
}
else
{

// 文字型比较
 if (method)
return lp1.CompareNoCase(lp2);
 else
 return lp2.CompareNoCase(lp1);
 }

 return0;
 }

</div>

第三步:添加列头点击事件  Lvn_Columnclick

void ClistDlg::OnLvnColumnclickxxx(NMHDR *pNMHDR, LRESULT *pResult)
{
LPNMLISTVIEW pNMLV = reinterpret_cast<LPNMLISTVIEW>(pNMHDR);
// TODO: 在此添加控件通知处理程序代码
sort_column = pNMLV->iSubItem;//点击的列
int count = m_list_port.GetItemCount();
for (int i=0;i<count;i++)
  m_list_port.SetItemData(i,i); // 每行的比较关键字,此处为列序号(点击的列号),可以设置为其他 比较函数的第一二个参数
m_list_port.SortItems(MyCompareProc,(DWORD_PTR)&m_list_port);//排序 第二个参数是比较函数的第三个参数
*pResult =0;
}

</div>

完成。

method是用来控制顺序逆序的,看个人情况设置。

以上所述就是本文的全部内容了,希望大家能够喜欢。

</div>
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • C++ 简单实现MFC ListControl 点击列头排序
  • MFC中动态创建控件以及事件响应实现方法

相关文章

  • 2017-05-28MFC自定义消息的实现方法
  • 2017-05-28C++实现不能被继承的类实例分析
  • 2017-05-28C++实现十六进制字符串转换为十进制整数的方法
  • 2017-05-28贪吃蛇游戏C++命令行版实例代码
  • 2017-05-28c++中处理相关数学函数
  • 2017-05-28C++实现迷宫算法实例解析
  • 2017-05-28C++中virtual继承的深入理解
  • 2017-05-28C++中用栈来判断括号字符串匹配问题的实现方法
  • 2017-05-28基于C++输出指针自增(++)运算的示例分析
  • 2017-05-28详解Bucket Sort桶排序算法及C++代码实现示例

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • C++获取当前系统时间的方法总结
    • C++编写简易的飞机大战
    • c++连接mysql5.6的出错问题总结
    • C++获取本机登陆过的QQ号码示例程序
    • 关于C/C++中typedef的定义与用法总结
    • 6个变态的C语言Hello World程序
    • C++简单输出钻石菱形图效果
    • STL 的string类怎么啦
    • C++中拷贝构造函数的应用详解
    • C++编程中的数据类型和常量学习教程

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有