SysListView32使用

句柄操作SYSLISTVIEW32 这几天公司有个项目是关于自动化的,说白了就是句柄操作。这几天遇到了一个syslistview32子项的双击事件,着是棘手,找了好半天才算苟延残喘地完成了,写篇总结,也给需要的人一些参考,少走些弯路吧。 单击(伪单击): 模拟SYSLISTVIEW32的Item的一个单击(选中该item)的话,这个不难,只需要遍历他的item,并把该item的状态设置为选中就可以了。上代码:        [ 阅读详情

转自:http://www.cnblogs.com/coderlee/archive/2010/01/06/1640783.html

使用列表控制的步骤如下:

1.            调用CreateWindowEx函数来创建一个列表控件,指定它的类名为SysListView32。您还可以在此处指定控件初次显示时的方式。
2.            创建和初始化用在列表控件中显示项目的图象列表(如果存在)。
3.            向列表控件中插入列,如果显示的方式是报告方式这一步是必须的。
4.            向控件中插入项目和自项目。



所用到的两种数据结构:

列:

LV_COLUMN STRUCT 
  imask dd ? 
  fmt dd ? 
  lx dd ? 
  pszText dd ? 
  cchTextMax dd ? 
  iSubItem dd ? 
  iImage dd ? 
  iOrder dd ? 
LV_COLUMN ENDS


imask
一组标志位标明该结构体中那些成员变量中的值有效。它的意义和上面我们提到的LV_COLUMN型结构体中向对应的成员变量基本相同。更详细的信息,可以查询WIN32 API 手册。

iItem
该结构体代表的项目的索引号。索引号是从0开始编号的。该值和表单的“行”类似。

iSubItem
和上一个成员变量指定的项目相连的子项目的索引号。您可以把它当作表单的“列”。譬如您想要把一个项目插入到新创建的列表视图控件,iItem的 值应为0(因为该项目是第一个项目),iSubItem的值也应当为0(我们想把该项目插到第一列)。如果你想指定一个子项目和该项目相连,iItem中 应该是您想要相连的项目的索引号,iSubItem的值应当是大于0的值,具体的值取决于您想把该子项目插在那一列。如果你的列表视图控件一共有4列的 化,第一列包含了项目,其余3列是留给子项目的。如果您想把子项目插在第四列,应当指定该值为3。

state
该成员变量包含的标志位反应了项目的状态。状态的改变可能是由用户的操作引起的或是程序改变的。这些状态包括:是否有焦点/高亮度显示/被选中(由于被剪切)/被选中等。另外还包括,以1为基数的索引用来代表是否处使用重叠/状态图标。

stateMask
由于上面的成员变量包含状态标志位、重叠的位图索引号、和状态位图的索引号,我们需要告诉WINDOWS我们到底需要设定或查询那一个值。该成员变量就是用来做这项工作的。

pszText
当我们想设定项目的属性时,它包含项目名称的ASCII码的字符串的地址。当查询项目的属性时,该成员变量将用来接收查询返回的项目的名称。

cchTextMax
仅当您用来查询项目的属性时才需要使用该值,这时它包含上一个成员变量的大小。

iImage
图标在列表视图中的图象链表中的索引号。

lParam
用户定义的值,当您给项目排序时使用。当您告诉列表视图对项目排序时,列表视图将成对地比较项目。 它将会把两个项目的lParam的值传给您,这样您就可以进行比较先列出那一个了。如果您现在还不太明白的话,没有系,我们稍后还要讲关于排序的问题。


控件通过SendMessage来发送消息来控制,常用的消息有:
LVM_INSERTCOLUMN  加入列,wParam 为整型,指定列号,lParam 为指向LV_COLUMN结构的指针
LVM_SETCOLUMN  设置列,参数同上
LVM_INSERTITEM  加入项目或子项目,wParam 为0,lParam 为指向LV_ITEM结构的指针
LVM_SETITEM  设置项目或子项目,参数同上
LVM_GETITEM  取得项目或子项目,参数同上
LVM_GETNEXTITEM  取得下一个项目或子项目,可以用来取得光标选择的项目
LVM_DELETEITEM  删除项目或子项目,wParam 为整型,指定项目索引号,lParam 为0
LVM_DELETEALLITEMS  删除所有项目,wParam 和 lParam 均为0
LVM_SETTEXTCOLOR  设置文字颜色,wParam 为0,lParam 为颜色的RGB值

LVM_SETTEXTBKCOLOR  设置文字背景色,参数同上

LVM_SETBKCOLOR  设置背景色,参数同上


下面是用SysListView32控件实现的简单的学生管理系统程序的一部分:


void InsertColumn(void)
{
    LV_COLUMN lvc;
	
    lvc.mask = LVCF_TEXT | LVCF_WIDTH;
	
    lvc.pszText = "学号";
    lvc.cx = 60;
    SendMessage(hList, LVM_INSERTCOLUMN, 0, (long)&lvc);
	
    lvc.pszText = "姓名";
    lvc.cx = 80;
    SendMessage(hList, LVM_INSERTCOLUMN, 1, (long)&lvc);
	
    lvc.pszText = "性别";
    lvc.cx = 40;
    SendMessage(hList, LVM_INSERTCOLUMN, 2, (long)&lvc);
	
    lvc.pszText = "年龄";
    lvc.cx = 40;
    SendMessage(hList, LVM_INSERTCOLUMN, 3, (long)&lvc);
	
    lvc.pszText = "出生日期";
    lvc.cx = 100;
    SendMessage(hList, LVM_INSERTCOLUMN, 4, (long)&lvc);
	
    lvc.pszText = "籍贯";
    lvc.cx = 150;
    SendMessage(hList, LVM_INSERTCOLUMN, 5, (long)&lvc);
	
    lvc.pszText = "入学时间";
    lvc.cx = 100;
    SendMessage(hList, LVM_INSERTCOLUMN, 6, (long)&lvc);
	
    lvc.pszText = "数学";
    lvc.cx = 40;
    SendMessage(hList, LVM_INSERTCOLUMN, 7, (long)&lvc);
	
    lvc.pszText = "英语";
    lvc.cx = 40;
    SendMessage(hList, LVM_INSERTCOLUMN, 8, (long)&lvc);
	
    lvc.pszText = "政治";
    lvc.cx = 40;
    SendMessage(hList, LVM_INSERTCOLUMN, 9, (long)&lvc);
}

LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
    static HINSTANCE hInst;
    HMENU hMenu;
    LV_ITEM lvi;
    int i;
	
    switch (message) 
    {
	case WM_CREATE:
		hInst = ((LPCREATESTRUCT)lParam) -> hInstance;
		hMenu = GetMenu(hwnd);
		InitCommonControls();
		hList = CreateWindowEx(NULL, TEXT("SysListView32"), NULL, LVS_REPORT | WS_CHILD | 
			WS_VISIBLE, 0, 0, 0, 0, hwnd, NULL, hInst, NULL);
		InsertColumn();
		SendMessage(hList, LVM_SETTEXTCOLOR, 0, #ffffff);
		SendMessage(hList, LVM_SETBKCOLOR, 0, #646464);
		SendMessage(hList, LVM_SETTEXTBKCOLOR, 0, #000000);
		Refresh();
		break;
		
	case WM_COMMAND:
		switch (LOWORD(wParam)) 
		{
			
		case IDREFRESH:
			Refresh();
			break;
			
		case IDINSERT:
			if (DialogBox(hInst, TEXT("StudInfo"), hwnd, InsertDlgProc)) InvalidateRect(hwnd, NULL, TRUE);
			break;
			
		case IDEDIT:
			lvi.iItem = SendMessage(hList, LVM_GETNEXTITEM, -1, LVNI_SELECTED);
			
			if (-1 == lvi.iItem) 
			{
				MessageBox(hwnd, "请选择一条记录!", "Edit Info", MB_OK | MB_ICONWARNING);
				break;
			}
			
			lvi.mask = LVIF_TEXT;
			lvi.cchTextMax = 20;
			
			for (i = 0; i < 10; ++i) 
			{
				lvi.iSubItem = i;
				lvi.pszText = buf[i];
				SendMessage(hList, LVM_GETITEM, 0, (long)&lvi);
			}
			if (DialogBox(hInst, TEXT("StudInfo"), hwnd, EditDlgProc)) 
				InvalidateRect(hwnd, NULL, TRUE);
			break;
			
		case IDDELETE:
			lvi.iItem = SendMessage(hList, LVM_GETNEXTITEM, -1, LVNI_SELECTED);		
			if (-1 == lvi.iItem) 
			{
				MessageBox(hwnd, "请选择一条记录!", "Delete Info", MB_OK | MB_ICONWARNING);
				break;
			}	
			SendMessage(hList, LVM_DELETEITEM, lvi.iItem, 0);
			lvi.mask = LVIF_TEXT;
			lvi.iSubItem = 0;
			lvi.pszText = buf[0];
			lvi.cchTextMax = 20;
			SendMessage(hList, LVM_GETITEM, 0, (long)&lvi);
			sprintf(query, "DELETE FROM student WHERE id = %s", buf[0]);
			ODBCConnect(hwnd);
			ODBCQuery(query);
			ODBCQueryEnd();
			ODBCDisconnect(hwnd);
			break;
			
		case IDEXIT:
			SendMessage(hwnd, WM_CLOSE, 0, 0);
			break;
			
		case IDABOUT:
			MessageBox(hwnd, "Students Info Administration System Developed by anonymous", 
				"About", MB_OK | MB_ICONINFORMATION);       
		}
		break;
		
        case WM_SIZE:
            MoveWindow(hList, 0, 0, LOWORD(lParam), HIWORD(lParam), TRUE);
            break;
			
        case WM_DESTROY:
            PostQuitMessage(0);
            break;
			
        default:
            return DefWindowProc(hwnd, message, wParam, lParam);
    }
}



win32通用控件ListView的使用 { TEXT("肖华"), TEXT("80"), TEXT("总经理"), TEXT("总经理") },{ TEXT("智博"), TEXT("20"),TEXT("技术部"), TEXT("工程师") },{ TEXT("王杰"), TEXT("40"), TEXT("技术部"), TEXT("经理") },{ TEXT("小米"), TEXT("18"), TEXT("客服部"), TEXT("经理") },UINT mask; 阅读详情

相关推荐

XE6 跨进程获取SysListView32

 XE6 跨进程获取SysListView32 bool GetListViewText(HWND hWnd, TStringList *list) { int vColumnCount; int vItemCount; int i, j; wchar_t vBuffer[255]; DWORD vProcessId; HANDLE vProcess; LPVOID vPoi

ksrsoft的专栏 2292

SysListView32 的使用资料

使用列表控制的步骤如下: 调用CreateWindowEx函数来创建一个列表控件,指定它的类名为SysListView32。您还可以在此处指定控件初次显示时的方式。 创建和初始化用在列表控件中显示项目的图象列表(如果存在)。 向列表控件中插入列,如果显示的方式是报告方式这一步是必须的。 向控件中插入项目和自项目。 所用到的两种数据结构:列: LV_COLUMN STRUCT imas...

weixin_30375247的博客 755

Win32 ListView控件基本使用

首先看一下Windows公共控件库,参阅; https://blog.youkuaiyun.com/bcbobo21cn/article/details/106287676 https://blog.youkuaiyun.com/bcbobo21cn/article/details/106289420 这几个公共控件库的控件,基本使用原理是一样的; 首先创建,添加列头;完成之后如下; 设置各部位颜色,使用SendMessage实现; 插入具体项目信息; 代码; #include <windows

bcbobo21cn的专栏 4030

pywin32 读取 ListView 控件中的内容

处理一下EasyBuilder_Pro中的查找与替换功能。想法是通过自动化的操作其他界面中的控件,减少工作量。

fzipw的博客 1443

SysListView32通用表格控件内容读取程序

刚刚写的用来读取Windows通用控件之表格控件的程序. 在这两天学习Windows的服务的时候觉得要把MMC中服务管理列表提取出来研究所以做了这个软件,拿出来给大家共享 。主要用到的是: WriteProcessMemory ReadProcessMemory 以及HDM_GETITEM消息 它可以用来读取“资源管理器”中文件列表(详细资料显示方式但Win7不行),服务管理器中的服务列表等等 Win7中执行请以管理员权限运行

VB获取另一个程序中SysListView32控件中的内容

使用VB获取另一个程序中SysListView32控件中的内容,含源码以及例程。

读取sysTreeview32和SysListView32

#include &lt;stdio.h&gt; #include &lt;windows.h&gt; #include &lt;commctrl.h&gt; int main(void) { /* Run through the windows until we find our listview. */ HWND hwnd = NULL; int count, i; char...

晚晴小筑 1688

【DICOM后处理】qt+vs 实现DICOM数据四视图显示

方法用于 设置 2D 视图的“向上”方向,即定义图像在屏幕坐标系中的朝向。该方法直接影响影像的显示方向,尤其在多平面重建(MPR)或非标准切面显示时至关重要。:方法用于 设置渲染窗口在屏幕上的显示位置(以像素为单位)。它控制的是 VTK 渲染窗口的左上角在屏幕坐标系中的坐标位置。DICOM四视图通常指同时显示医学影像的四个不同平面或视角,用于全面分析三维数据(如CT、MRI等)。:基于 标量值 设置不透明度(控制不同组织的显示),显示骨骼or显示高密度流体等。默认朝向原点 (0, 0, 0)

weixin_41804847的博客 1325

[转载]SysListView32使用

转自:http://www.cnblogs.com/coderlee/archive/2010/01/06/1640783.html 使用列表控制的步骤如下: 1. 调用CreateWindowEx函数来创建一个列表控件,指定它的类名为SysListView32。您还可以在此处指定控件初次显示时的方式。 2. 创建和初始化用在列表控件中显...

angbagangzhe065140的博客 162

Windows环境下Elasticsearch与JDK版本兼容性实战指南

本文详细解析了Windows环境下Elasticsearch与JDK版本的兼容性问题,提供了从版本匹配检查到安装部署的完整实战指南。重点介绍了Elasticsearch 8.x需JDK 17+等关键版本对应关系,并分享多版本JDK共存方案及性能优化技巧,帮助开发者高效避坑。

weixin_29250403的博客 421

Mid-360与FAST-LIO2实战:从点云采集到高精度建图全流程解析

本文详细解析了使用Livox Mid-360激光雷达与FAST-LIO2算法实现高精度实时建图的全流程。内容涵盖硬件准备、软件环境搭建、算法部署配置、数据采集实战,并重点探讨了多楼层场景下的参数调优与误差抑制策略,为机器人及无人机三维感知应用提供了实用指南。

prometheus9mon的博客 414

探索任务管理器的秘密:SysListView32 实例读取工具

探索任务管理器的秘密:SysListView32 实例读取工具 【下载地址】SysListView32实例读取工具 本仓库提供了一个名为 `Task_SysListView32.rar` 的资源文件,该文件主要用于读取其他程序中的 `SysListView32` 实例。具体来说,该工具可以帮助用户读取任务管理器中的“详细...

gitblog_09749的博客 1000

LabVIEW Modbus通讯实战:从安装库到读写寄存器的完整避坑指南

本文详细介绍了LabVIEW与Modbus通讯的完整实战指南,从安装库文件到读写寄存器的全流程操作,帮助开发者避开常见问题。通过虚拟串口配置、主机配置实战和高级调试技巧,提升工业自动化领域的通讯效率与可靠性。

milk8的博客 740

SysListView32控件的使用

SysListView32控件的使用  2011-05-07 17:34:25|  分类: 计算机 |  标签: |字号大中小 订阅 http://gunxue77.blog.163.com/blog/static/1196804220114753425303/   使用列表控制的步骤如下: 1.            调用CreateWindowEx函数来创建一个列

zbx91的专栏 1265

3D模型文件格式全解析:从STL到glTF,10种主流格式与转换实战指南

在三维数字内容创作与工程制造领域,3D模型文件格式是数据交换与协作的基石。其核心原理在于以不同的数据结构(如三角网格、NURBS曲面、边界表示等)对三维物体的几何、外观及场景信息进行编码。理解这些格式的技术特性,对于保障数据完整性、提升工作流效率具有关键价值,广泛应用于3D打印、游戏开发、影视动画及工业设计等场景。例如,面向增材制造的STL格式以其极简的三角面片结构成为行业通用语,而支持丰富材质与动画的FBX格式则在影视游戏管线中扮演核心角色。本文聚焦于STL、OBJ、FBX、3MF、STEP等10种主流格

weixin_28520495的博客 356

从零到一:手把手教你构建工业级Modbus转MQTT网关(STM32+ESP8266实战)

本文详细介绍了如何利用STM32和ESP8266构建工业级Modbus转MQTT网关,涵盖硬件选型、代码示例、协议转换及稳定性设计。重点解析Modbus RTU与MQTT协议对接阿里云物联网平台的实战步骤,确保数据可靠传输与长期稳定运行,为工业物联网应用提供完整解决方案。

u0v1w2x3的博客 685

SysListView32控件响应鼠标单击消息

本文出自程序人生 >> SysListView32控件响应鼠标单击消息 作者:代码疯子 SysListView32控件就是列表视图控件(MFC里面的CListCtrl就是对SysListView32进行的封装)。如果想知道用户选择了哪个元素,可以这么响应消息(注意,这里是Report风格):// Coded by 代码疯子 // http://www.programlife.net/

ProgrammingRing的专栏 4232

ARIMA模型的R实现

1.模型简介 ARIMA模型,全称差分自回归移动平均模型。可以看作是差分运算和ARMA模型的结合。主要是针对具有线性趋势的非平稳的时间序列,来进行建模预测。 ARIMA模型的形式如下: Φ(B)∇

heirenmin的博客 1万+

C 获取 SysListView32 所有行内容源代码:让列表控件内容获取更简单

C# 获取 SysListView32 所有行内容源代码:让列表控件内容获取更简单 去发现同类优质开源项目:https://gitcode.com/ 项目介绍 在 Windows Forms 应用程序开发中,SysListView32 控件被广泛用于展示列表数据。然而,有时我们需要获取这个控件中所有行的内容,包括列表头。C# 获取 SysListView32 所有行内容源代码项目为此提供了一个简洁...

gitblog_06730的博客 787

使用pyqt5实现可勾选的测试用例界面

使用pyqt5实现可勾选的测试用例界面

天赐好车的博客 629

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

systreeview32选中_读取sysTreeview32和SysListView32

#include #include #include int main(void){/* Run through the windows until we find our listview. */HWND hwnd = NULL;int count, i;char item[512] = {0}, subitem[512] = {0};LVITEM lvi, *_lvi;char *_item,...

weixin_29114331的博客 577

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

[转载]SysListView32控件响应鼠标单击消息

本文出自程序人生>>SysListView32控件响应鼠标单击消息作者:代码疯子 SysListView32控件就是列表视图控件(MFC里面的CListCtrl就是对SysListView32进行的封装)。如果想知道用户选择了哪个元素,可以这么响应消息(注意,这里是Report风格): 1 // Coded by 代码疯子 2 // http:/...

angbagangzhe065140的博客 331

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

更改SysListView32内的项

以下代码是更改SysListView32内的项  Option ExplicitPrivate Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As LongPrivate Declar

wq1282的专栏 2390
上一篇: SysListView32控件响应鼠标单击消息
下一篇: 列表视图控件
ProgrammingRing
博客等级 码龄17年 76粉丝 31原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值