clistctrl

How To Handle NM_CUSTOMDRAW event to retrieve List items

南楼画角 提交于 2021-02-08 10:30:34
问题 I'm working on a win32/MFC project. I have a custom CListCtrl control that I must to add, from time to time, some strings of characters. I absolutely need to perform some manipulations on items dynamically added to my CListCtrl. Ultra-Basically, I need to: Detect adding of single elements; Retrieve _single items_ IMMEDIATELY AFTER(ideally, shortly after InsertItem() invocation); Store values of single items in a map, which I will use to perform other manipulations. I thought about doing this

CListCtrl控件的使用指南

和自甴很熟 提交于 2020-03-08 11:22:13
创建图形列表并和CListCtrl关联: m_image_list.Create(IDB_CALLER2, 16, 10, RGB(192,192, 192)); m_image_list.SetBkColor( GetSysColor( COLOR_WINDOW ) ); m_caller_list.SetImageList( &m_image_list, LVSIL_SMALL); 为报表添加4列: char *szColumn[]={"昵称","IP地址","登陆时间","状态"}; int widths[]={100,98,70,55}; LV_COLUMN lvc; lvc.mask=LVCF_FMT|LVCF_WIDTH|LVCF_TEXT|LVCF_SUBITEM; lvc.fmt=LVCFMT_LEFT; for(int i=0;i<4;i++) {//插入各列 lvc.pszText=szColumn[i]; lvc.cx=widths[i]; lvc.iSubItem=i; m_caller_list.InsertColumn(i,&lvc); } 为报表添加两项,以附加方式添加: char* data[4]; data[0]="所有人"; data[1]="0.0.0.0"; data[3]="在线"; data[2]=new char; CTime now

CListCtrl控件使用详解

喜夏-厌秋 提交于 2020-03-08 11:21:19
1.CListCtrl控件 CListCtrl控件在数据库编程中是用得比较多的控件之一,也是Window控件中较难掌握的一个控件。他可以有四显示方式,Report、List、Icon、SmallIcon。Report报告式列表视图方式在数据库开发中是最常用的一种方式。在控件"properties"的Styles选项卡中在View项可以选择Report方式。Report方式中列表控件的显示方式是有行和列的,行又叫做Item,但有多列是我们只能操作每一行的第零列,也就是最前列。 2.与CListCtrl控件相关的数据类型 (1)LV_COLUMN结构 该结构仅用于报告式列表视图,用来描述表项的某一列。要想向表项中插入新的一列,需要用到该结构。 LV_COLUMN结构定义如下: typedef struct_LV_COLUMN{ UINT mask; //屏蔽位的组合,表明哪些成员是有效的 int fmt; //该列的表头和子项的标题显示格式(LVCF_FMT) int cx; //以象素为单位的列的宽度(LVCF_FMT) LPTSTR pszText; //指向存放列表头标题正文的缓冲区(LVCF_TEXT) int cchTextMax; //标题正文缓冲区的长度(LVCF_TEXT) int iSubItem; //说明该列的索引(LVCF_SUBITEM) }LVCOLUMN;

CListCtrl自绘

耗尽温柔 提交于 2020-03-08 11:17:51
花了一个晚上学习listctrl的自绘,不是很简单,可能比CRichEditCtrl还要复杂些,遇到第一件事情是自适应改变行高,项目需要,当然也可以是固定,最终解决方案如下: 网上修改CListCtrl项高度的方法一般是扩大字体,及用图片将项高度撑大. 这两种方法虽然简单,但是效果却不是很理想.一种比较理想的方法是自画CListCtrl,不过方法相对来说比较复杂. 要修改CListCtrl的列表项高度,我们需要自己添加 MeasureItem 的消息响应函数,对应的消息是 WM_MEASUREITEM+WM_REFLECT_BASE, 而不是 WM_MEASUREITEM.在CListBox里我们可以直接在 ClassWizard 里将此消息响应添加进 class 里,但是 CListCtrl 默认是没有这个消息响应的,我们需要手动添加它(注意,这里不是 WM_MEASUREITEM. CListCtrl 仅有 WM_MEASUREITEM, 对应的函数为 OnMeasureItem). 为了响应这个消息,我们还需要给列表加上 LVS_OWNERDRAWFIXED 风格.可以在 Create 列表的时候添加,也可以在 PreCreateWindow 虚函数中添加. 添加 MeasureItem 消息响应函数,首先我们需要在类的头文件中添加: afx_msg void

CListCtrl用法简介及使用技巧(一)

老子叫甜甜 提交于 2020-03-08 11:13:23
[设置属性] 首先用资源编辑器拖放一个ListCtrl控件到对话框中。 设置属性。 Always Show Selection: True // 即便失去焦点依然高亮选择 SingleSelection: True // 只允许选中一行 View: Report // 报表方式,较常用 [初始化] // 1. 在对话框的 OnInitialDialog 中初始化ListCtrl // 1. 设置样式 m_ListCtrl.SetExtendedStyle( LVS_EX_FULLROWSELECT ); // LVS_EX_FULLROWSELECT: 表示选中整行,而非某一列 // LVS_EX_GRIDLINES: 显示网格线 // LVS_EX_CHECKBOXES: 第一列前面显示复选框 // LVS_EX_FLATSB: 比较平的滚动条 // 2. 插入列 m_ListCtrl.InsertColumn( 0, _T("列标题0"), LVCFMT_LEFT, 100 ); m_ListCtrl.InsertColumn( 1, _T("列标题1"), LVCFMT_LEFT, 100 ); // LVCFMT_LEFT表示列左对齐,还可以取LVCFMT_RIGHT,LVCFMT_CENTER // 100为列宽 // 3. 插入行 // 可以在初始化时插入行

VC CListCtrl控件的使用方法

青春壹個敷衍的年華 提交于 2020-03-02 06:10:48
在VC中使用控件一直是件让我头痛的事件,从控件的创建到控件的操作管理,都得写一大堆代码,相比于Delphi/VB,实在是麻烦多了。其实在之前学习SDK的时候,就有想过专门花点儿时间来学习VC中控件的使用,但一直没空。最近准备写一个小工具,要用到ListCtrl控件,所以又不得不好好的恶补一翻。 我是在MFC的对话框模式下使用CListCtrl控件的,其实不管在SDK或文档/视图模式下,VC控件的使用都差不多,下面来好好的写写CListCtrl控件的使用笔记。 一、CListCtrl控件的创建 由于我是在MFC的对话框模式下使用CListCtrl控件的,所以只需要在控件栏上选择CListCtrl的图形按钮,接着添加到对话框中就行了。 二、CListCtrl控件样式的设置 第一步:在使用CListCtrl控件之前,首先需要为该控件关联一个变量(只针对于对话框模式): CListCtrl m_BlogAccountList; 第二步:由于CListCtrl控件要做一些初始化操作,比如设置控件样式,设置控件的行列并填入一些数据。初始化操作的代码是在对话框的OnInitDialog事件中写入的。 默认情况下,CListCtrl控件的样式是非常简陋的,大多情况下我们都需要对CListCtrl控件的样式进行修改,比如设置为报表样式,可以进行整行选择等,如有需要还有调整CListCtrl控件的行高

VC的CListCtrl控件详解

只愿长相守 提交于 2020-03-02 06:10:34
1. CListCtrl 样式及设置2. 扩展样式设置3. 数据插入4. 一直选中Item5. 选中和取消选中Item6. 得到CListCtrl中所有行的checkbox的状态7. 得到CListCtrl中所有选中行的序号8. 得到item的信息9. 得到CListCtrl的所有列的header字符串内容10. 使CListCtrl中一项可见,即滚动滚动条11. 得到CListCtrl列数12. 删除所有列13. 得到单击的CListCtrl的行列号14. 判断是否点击在CListCtrl的checkbox上15. 右键点击CListCtrl的item弹出菜单16. CListCtrl进行大数据量更新时,避免闪烁!时间仓促,此播客内容大多为网上整理,特向原作者表示感谢! 1. CListCtrl 样式及设置 LVS_ICON: 每个item显示大图标 LVS_SMALLICON: 每个item显示小图标 LVS_LIST: 显示一列带有小图标的item LVS_REPORT: 显示item详细资料 如windows资源管理器,“查看”标签下的“大图标,小图标,列表,详细资料” LONG lStyle; lStyle=GetWindowLong(m_ListCtrl.m_hWnd, GWL_STYLE); //获取当前窗口style lStyle &=~LVS_TYPEMASK;

MFC 列表控件CListCtrl详解

笑着哭i 提交于 2020-02-27 04:58:28
CListCtrl::SetExtendedStyle CListCtrl的成员函数声明   DWORD SetExtendedStyle(   DWORD dwNewStyle );   函数功能设置CListCtrl的扩展样式   dwNewStyle指定的扩展样式   LVS_EX_GRIDLINES //绘制表格,网格线。   LVS_EX_SUBITEMIMAGES//子项目图标列表   LVS_EX_CHECKBOXES //带复选框   LVS_EX_TRACKSELECT //自动换行   LVS_EX_HEADERDRAGDROP//报表头可以拖拽   LVS_EX_FULLROWSELECT //选择整行,允许选择整行。   LVS_EX_ONECLICKACTIVATE//单击激活单击选中项目。   LVS_EX_TWOCLICKACTIVATE//双击激活   LVS_EX_FLATSB//扁平滚动条   LVS_EX_REGIONAL   LVS_EX_INFOTIP   LVS_EX_UNDERLINEHOT   LVS_EX_UNDERLINECOLD   LVS_EX_MULTIWORKAREAS//多工作区 ---------------------------------- 例子:m_TextList.SetExtendedStyle(...);

mfc的ClistCtrl控件列的排序

只谈情不闲聊 提交于 2020-02-25 22:55:18
在网上看了许多排序的方法 , 都没看懂 , 初学者的悲剧 , 然后就自己弄了个 , 请大家指正 . ClistCtrl 控件的行带着一个结构体 , 不过那结构体不好懂 , 看得眼花缭乱 . 好多也弄不明白 , 就自己写了个结构体 , 把一行的数据全写入结构体中 , 交换两结构体的数据就简单多了 . typedef struct { wchar_t id[6]; // 编号 wchar_t name[10]; // 姓名 wchar_t sex[2]; // 性别 int age; // 年龄 wchar_t fenlei[6]; // 分类 wchar_t tel[12]; // 电话 }myTongXiLu; [.cpp] 写两个函数 , 把结构体写入指定行中 , 一个从指定行中的数据写入结构体中 // 写入 void CMFCApp_CFile_testDlg::SetItemInofToxiluJG(int selIndex,myTongXiLu* toxilu) { CString str; m_list.SetItemText(selIndex, 0, LPCTSTR(toxilu->id)); m_list.SetItemText(selIndex, 1, toxilu->name); m_list.SetItemText(selIndex, 2, toxilu-

20200220MFC 之CListCtrl(二)

浪子不回头ぞ 提交于 2020-02-21 04:23:23
本文根据本人在项目中的应用,来谈谈CListCtrl的部分用法及技巧。当初学习时,查了很多资料,零零碎碎的作了些记录,现在主要是来做个总结,方便以后查阅。主要包括以下十三点内容:基本操作、获取选中行的行号、复选框操作、动态设置选中行的字体颜色、设置选中行的背景颜色、禁止拖动表头、让第一列居中显示、设置行高与字体、虚拟列表技术、点击表头时进行归类、向上与向下移动、动态调整大小问题、避免闪烁问题。 1、基本操作 分别从下面四点来介绍CListCtrl的基本操作: `① 设置列表视图显示方式 Ⅰ . CListCtrl有四种样式:LVS_ICON、LVS_SMALLICON、LVS_LIST、LSV_REPORT,可通过控件属性来设置。本文所述均为LSV_REPORT属性。 Ⅱ . 扩展样式: 常用的扩展样式有三种:LVS_EX_FULLROWSELECT、LVS_EX_GRIDLINES、LVS_EX_CHECKBOXES,分别对应作用 选中某行时使正行高亮、设置网格线、item前生成Ckeckbox控件。 使用SetExtendedStyle(style)函数设置扩展样式,使用GetExtendedStyle()函数获取样式, 如: m_listInfo.SetExtendedStyle(LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES); Ⅲ .