Win32 ListCtrl控件点击列标题排序
1.在WM_NOTIFY消息中捕获鼠标点点击列的索引
int MyMainDialog::OnNotify(NMHDR* pNMhdr)
{
if (pNMhdr->idFrom == IDC_LIST1)
{
QListCtrl listCtrl(pNMhdr->idFrom, this);
NMLISTVIEW* pNmListView = (NMLISTVIEW*)pNMhdr; switch (pNMhdr->code)
{
case LVN_COLUMNCLICK:
{
//获得点击的列的索引
int nCol = pNmListView->iSubItem;
//获得列标题中图标的索引
int nColImage = listCtrl.GetColumnImageIndex(nCol);
//SortItemFunc自己定义的排序回调函数,第二个参数传二个值(列索引,升序=0/降序=1)
//这个函数就是向ListCtrl控件发送的LVM_SORTITEMS消息
listCtrl.SortItem(SortItemFunc, MAKELPARAM(nCol, nColImage));
//排序后把图标索引改变(就在0和1之间)
listCtrl.SetColumnImageIndex(nCol, (nColImage == 0 ? 1 : 0)); }break; case LVN_DELETEITEM: //关闭窗口后删除行中保存New出来的内存地址
{
if (pNmListView->lParam != 0)
{
delete (StudentStruct*)pNmListView->lParam;
pNmListView->lParam = 0;
}
}break; }
} return 0;
}
2.自定义回调函数SortItemFunc
int CALLBACK SortItemFunc(LPARAM lParam1, LPARAM lParam2, LPARAM sortID)
{
//要比较的两行数据
//这两行的数据是保存在行的lParam数据中
//用SetItemData赋值的
StudentStruct* pStu1 = (StudentStruct*)lParam1;
StudentStruct* pStu2 = (StudentStruct*)lParam2; int nCol = LOWORD(sortID); //要比较的列索引
int nAcs = HIWORD(sortID); //按升序或是降序排序
int nRet = 0;
switch (nCol)
{
case 0: //姓名
nRet = _tcscmp(pStu1->name, pStu2->name);
break;
case 1: //性别
nRet = _tcscmp(pStu1->sex, pStu2->sex);
break;
case 2: //年龄,这是字符比较,如果是数字比较就要自己处理<,=,>的结果
//nRet = _tcscmp(pStu1->age, pStu2->age);
if (pStu1->age < pStu2->age)
nRet = -1;
if (pStu1->age == pStu2->age)
nRet = 0;
if (pStu1->age > pStu2->age)
nRet = 1; break;
case 3: //电话
nRet = _tcscmp(pStu1->tel, pStu2->tel);
break;
} return (nAcs == 0 ? nRet : -nRet);
}
点击性别示意图
点击年龄示意图
点击姓名示意图
感觉林这个性没排对,不只为啥?
Win32 ListCtrl控件点击列标题排序的更多相关文章
- datagridview 点击列标题排序
开发winform中,平时经常用到数据列表,我们大多选用datagridview,但是此控件本身没有排序的功能.参阅网上资料.留下标记,以后备用. datagridview的数据显示一般是通过数据绑定 ...
- WPF中的DataGridTemplateColumn实现点击列标题排序
在DataGrid中使用模板列时,默认功能中对点击列标题是不对列值进行排序的,要排序就需要添加以下两个属性: 1.CanUserSort="True" 2.SortMemberPa ...
- winform dataGridView 点击列标题排序
winform手动绑定数据后,点击列标题不能实现自动排序,苦苦寻找方法,发现下面的是可行的. //建立DataTable将当前dataGridView中的数据读进DataTable中 public D ...
- win32 listctrl控件右键菜单的实现
HMENU Menu_list,Menu_all; POINT point; HINSTANCE hInstance;//下面代码放到BOOL WINAPI DialogProc下 case WM_C ...
- VC/MFC ListCtrl 控件功能使用汇总(转)
以下未经说明,listctrl默认view 风格为report 相关类及处理函数 MFC:CListCtrl类 SDK:以 “ListView_”开头的一些宏.如 ListView_InsertCol ...
- ListCtrl控件的使用
list contrl控件的使用 .建立基于对话框的应用程序,布置界面,设置属性. 注意添加的是listctrl控件,不是listbox控件,在控件工具箱的倒数第五行list control控件. 属 ...
- LISTCTRL控件方法
以下未经说明,listctrl默认view风格为report --------------------------------------------------------------------- ...
- ListCtrl控件
一 CListCtrl类型 LVS_EDITLABELS LVS_OWNERDRAWFIXED LVS_REPORT LVS_SHOWSELALWAYS LVS_SINGLESEL LVS_SMALL ...
- duilib中ListCtrl控件的实现
转载请说明出处,谢谢~~ 昨天在编程群里聊天,提到了ListCtrl,然后有网友找我,他需要做一个ListCtrl控件,我看过需求后接下了这个活.今天就把大致的思路和过程记录一下.首先看<任务书 ...
- ListCtrl控件着色
最近在写一款山寨的反病毒软件,大致功能已经实现,还有一些细小的环节需要细化. 其中,在界面编程中,就用到了给ListCtrl控件着色,查看了网上一些文章,终于实现了. 其实说白了,原理很简单,就是Li ...
随机推荐
- .NET Core MVC基础之页面传值方式📃
.NET Core MVC基础之页面传值方式 前言 最近工作太忙了,浅浅更新一下.NET基础知识.大部分面试官都会问.NET页面传值的几种方式,那么接下来就来细讲与实现一下吧! 页面传值分成两类 第一 ...
- Android系统启动:2-Init篇
Android系统启动:Init篇 原文:http://gityuan.com/2016/02/05/android-init/ 概述 init进程是Linux系统中用户空间的第一个进程,进程号固定为 ...
- python基础-集合set { }
集合的定义和操作 集合的特性: 元素数量 支持多个 元素类型 任意 下标索引 支持 重复元素 不支持 可修改性 支持 数据有序 否 使用场景 不可重复的数据记录场景 # 定义集合 my_set = { ...
- CF1860C 题解
显然是一个博弈论题,考虑 dp. 定义状态 \(dp_i\) 表示先手走到 \(i\) 之后是否有必胜策略,不难发现以下几点: 若走到 \(i\) 之后无路可走,那么就必败. 若走到 \(i\) 之后 ...
- yb课堂 首页home开发 《三十七》
Home模块开发 拆分子组件 Home banner videoList 指令属性里面取data里面的数据不用加{{}},html标签内容体中间则需要加双花括号 创建component文件夹 在src ...
- Luogu P5745 区间最大和
原题链接:Luogu P5745 区间最大和 初看这道题,
- log4js 的安装设置和实例
1. 安装 yarn add log4js -D 2.设置 const log4js = require('log4js') 3.实例 var log = log4js.getLogger(); // ...
- 解读GaussDB(for MySQL)灵活多维的二级分区表策略
本文分享自华为云社区<GaussDB(for MySQL)创新特性:灵活多维的二级分区表策略>,作者:GaussDB 数据库. 背景介绍 分区表及二级分区表的功能,可以让数据库更加有效地管 ...
- Python 按规则解析字符串中的嵌套函数并实现函数调用
按规则解析字符串中的嵌套函数并实现函数调用 需求 1.按照一定规则解析字符串中的函数表达式,并替换这些表达式.这些函数表达式可能包含其它函数表达式,即支持函数嵌套 2.函数表达式格式:${ __函数名 ...
- CSP-S提高组数据结构算法模板大合集
CSP-S 算法总结 2.2.1 基础知识与编程环境 无 2.2.2 C++ 程序设计 2 set/nultiset map/multimap deque/priority_queue STL 2.2 ...