MFC CListCtrl 锁定表头的方法

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情

群里有朋友问锁定表头这个怎么实现,就顺便写一下吧。

解决此问题的思路:

  子类化CHeaderCtrl,处理由父窗口反射的HDN_BEGINTRACK消息,实际上这个消息有ASCII版本和UNICODE版本,所以这里就要对HDN_BEGINTRACKAHDN_BEGINTRACKW都进行处理。处理这个消息是为了实现锁定表头,另外为了更加完善,也要将光标修改成默认的箭头。还有提供一个方法来设置是否锁定表头,显得控件更加灵活。

首先添加一个从CHeaderCtrl派生的类,名为CLockHeaderCtrl.

MFC列表控件增强包:点击表头排序+指定列禁止拖拽调整宽度 一套开箱即用的MFC列表增强组件,包含CMyListCtrl和CMyListView两个派生类,分别适配对话框内嵌ListCtrl控件和基于CListView的文档视图。点击列标题自动切换升序/降序排序,内置智能类型识别(文本、数字、日期),无需重写CompareItems。支持预设任意列索引及其固定宽度,通过拦截HDN_ITEMCHANGING消息实现列宽锁定,不影响其他列的手动调整。使用时只需替换原控件变量类型,并在初始化函数(如OnInitDialog或OnInitialUpdate)中调用SetFi 阅读详情

相关推荐

股票列表实时行情刷新:VC6.0+MFC定时器与双缓冲实战

实时数据刷新是桌面金融终端的基础能力,尤其在股票列表场景中,高频更新与UI流畅度往往难以兼得。VC6.0与MFC作为经典技术栈,通过定时器驱动、数据中心解耦及列表控件局部重绘,能够实现稳定且低开销的3秒级行情刷新。从定时器选型、线程模型、双缓冲防闪烁到滚动条位移补偿,系统拆解了CListCtrl在实时刷新场景下的工程实践,并给出模拟数据源与调试技巧。无论是维护老系统,还是构建监控大屏,这套设计思路都具备直接参考价值。

weixin_33859135的博客 300

mfc_ListView/ListCtrl 实现点击表头排序与固定列宽

MFC. 1. 自定义CMyListView,继承自CListView, 实现点击表头进行该列排序以及固定某些列宽的功能。使用时直接继承此View即可。 2. 自定义CMyListCtrl, 继承自CMFCListCtrl, 同样实现上述功能,用于listctrl控件。使用时,将控件的control变量更改为CMyListCtrl即可。

MFC仓库管理系统实战:数据库事务与界面优化全解析

MFC作为Windows桌面应用开发的经典框架,其核心价值在于紧贴Win32 API、调试直观、教学适配度高,特别适合课程设计与轻量级本地业务系统开发。理解CRecordset数据封装、CDatabase事务控制(BeginTrans/CommitTrans)、虚拟列表(LVS_OWNERDATA)性能优化等关键技术,是保障超市仓库类系统数据强一致性与交互流畅性的基础。结合ODBC数据库连接、DDX/DDV数据绑定、GDI打印等原生能力,MFC能以极低依赖实现入库单生成、库存联动更新、滞销预警等闭环业务逻辑

weixin_34034670的博客 480

MFC GridCtrl 首行首列冻结

基于vs2008的MFC的GridCtrl控件的使用,就是简单的首行首列冻结方式,另外还有详细的参考步骤:http://blog.csdn.net/i_love_u_5/article/details/49930357

使MFC中的ListCtrl控件的列宽固定不可变

通过重写虚函数OnNotify实现,OnNotify函数是CListCtrl类中的虚函数,通过重载该函数,来修改ListCtrl控件的一些属性。 具体方法: 假设有类A: class A : B {} class B:CListCtrl {} 在类A的头文件中: //头文件中 virtual BOOL OnNotify(WPARAM wParam, LPARAM lParam

mazi的博客 4824

MFC 新版本的ListCtrl自带双缓冲属性 LVS_EX_DOUBLEBUFFER,防止插入大量数据闪烁

LONG lStyle; lStyle = GetWindowLong(m_wndVirtualList.m_hWnd, GWL_STYLE);//获取当前窗口style lStyle &= ~LVS_TYPEMASK; //清除显示方式位 lStyle |= LVS_REPORT; //设置style SetWindowLong(m_wndVirtualList.m_hWnd, GWL_STYLE, lStyle);//设置style DWORD dwStyle = m_wndVirt.

tajon1226的专栏 2270

MFC学习笔记之:ListCtrl控件使用详解

1、            ListCtrl添加左键单击函数(这个很重要)2、            ListCtrl风格设置(一般是网格)一般listctrl默认view风格为report,一般在OnInitDialog函数中:              LONG m_lStyle;          m_lStyle = GetWindowLong( m_list.m_hWnd , GWL_STYLE);//获取当前窗口style          m_lStyle |= LVS_EX_FULLROWS

James Gump的专栏 2699

如何锁定listctrl的某列的列宽?

BOOL CEditorList::OnNotify(WPARAM wParam, LPARAM lParam, LRESULT* pResult) { HD_NOTIFY *pHDN = (HD_NOTIFY*)lParam; switch (((NMHDR*)lParam)->cod

cz851220的专栏 1937

MFC对话框控件等比例缩放方案:自动适配窗口大小与分辨率

在桌面应用开发中,UI布局自适应是提升用户体验的关键技术。其核心原理在于通过记录控件初始状态与窗口尺寸的比例关系,在窗口大小变化时动态计算新坐标与尺寸,实现界面元素的等比例缩放。这项技术的工程价值在于,它能有效解决多分辨率适配与窗口自由拖拽带来的布局错乱问题,避免开发者手动处理每个控件的WM_SIZE消息,极大提升了开发效率与代码可维护性。在MFC这类缺乏内置布局管理器的框架中,实现一套轻量、非侵入性的自动缩放管理器尤为重要。本文聚焦于MFC桌面应用,通过设计CAutoScaleManager类,详细阐述了

weixin_33736649的博客 360

MFC现代化改造:可视化设计器与换肤系统实战指南

在Windows桌面应用开发领域,图形用户界面(GUI)框架的选择直接影响开发效率和软件体验。MFC(Microsoft Foundation Classes)作为经典的C++框架,凭借其与Win32 API的紧密集成和卓越性能,在工业控制、金融系统等专业领域仍广泛应用。其核心原理基于消息映射和文档-视图架构,通过封装Windows API简化开发。然而,传统MFC开发面临界面设计繁琐、视觉效果陈旧的技术瓶颈。通过引入可视化设计工具和样式与状态分离的架构,开发者能够实现高效的界面开发和动态换肤功能,显著提升

weixin_30096975的博客 215

锁定CListCtrl的首列或前几列

原文链接:http://jingyan.baidu.com/article/5bbb5a1b38af1113eaa17910.html CYJHeaderCtrl是继承CHeaderCtrl的自定义类,重载OnChildNotify,以下代码可以禁止指定列数的列被拖动改变列宽,从而实现锁定例的功能。 BOOL CYJHeaderCtrl::OnChildNotify(UINT message, WPARAM wParam, LPARAM lParam, LRESULT* pLResult) { //

yuxiao1121的专栏 799

mfc 冻结行列

实现了冻结双缓冲

moyumoyu的专栏 841

MFC总结之CListCtrl用法及技巧(一)

本文根据本人在项目中的应用,来谈谈CListCtrl的部分用法及技巧。当初学习时,查了很多资料,零零碎碎的作了些记录,现在主要是来做个总结,方便以后查阅。主要包括以下十三点内容:基本操作、获取选中行的行号、复选框操作、动态设置选中行的字体颜色、设置选中行的背景颜色、禁止拖动表头、让第一列居中显示、设置行高与字体、虚拟列表技术、点击表头时进行归类、向上与向下移动、动态调整大小问题、避免闪烁问题。

茅庐 5万+

MFC 禁止拖动 ListCtrl 表头,获取选中行号

禁止拖动 重载OnNotify BOOL CMainDialog::OnNotify(WPARAM wParam, LPARAM lParam, LRESULT* pResult) { // TODO: 在此添加专用代码和/或调用基类 //屏蔽两个消息通知码,使得禁止拖动List表头 NMHEADER* pNMHeader = (NMHEADER*)lParam; if (((pNMHeader->hdr.code == HDN_BEGINTRACKW) | (pNMHeade.

我的 博客 941

解决ListCtrl控件第一列文字不能居中显示的问题/修改网格线


 把CListCtrl设置为Report风格,但是插入第一列的时候(InsertColumn)的时候会发现文字不能居中。即使使用了LVCFMT_CENTER,其他列都可以正常居中,但第一列仍然靠左显示。 插入第一列后,改变它的参数: LVCOLUMN lvc; lvc.mask = LVCF_FMT; GetColumn(0, &lvc); lvc.fmt...

heshaai6843的博客 1459

MFCCListCtrl的使用与技巧

列表控件可以看作是功能增强的ListBox,它提供了四种风格,而且可以同时显示一列的多中属性值。MFC中使用CListCtrl类来封装列表控件的各种操作。通过调用 BOOL Create( DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID );创建一个窗口,dwStyle中可以使用以下一些列表控件的专用风格:

jiangxt211的专栏 2186
上一篇: WTL for Visual Studio 2012 配置详解
下一篇: VC++实现获取文件占用空间大小的两种方法(非文件大小)
hwangbae
博客等级 码龄14年 12粉丝 9原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值