c语言 listview,C语言 SDK编程之通用控件的使用--ListView

一、ListView控件属于通用控件CONTROL中的一种,在SDK编程方式时要使用通用控件

必须包含comctl32.dll,所以代码中要有头文件: commctrl.h    导入库:comctl32.lib

在使用通用控件之前应该先调用InitCommonControls();初始化它

以ListView控件为例:

InitCommonControls();

//子窗口形式使用LISTVIEW

CreateWindowEx(0, //扩展风格

WC_LISTVIEW, //这是系统定义的宏,WC_LISTVIEW对应 "SysListView32"

"123", //窗口标题

WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS | WS_CLIPCHILDREN

| LVS_REPORT | LVS_AUTOARRANGE | LVS_SHOWSELALWAYS

| LVS_SHAREIMAGELISTS | LVS_SINGLESEL , //窗口风格 (普通控件风格在这里设置,扩展风格要单独设置)

0,

0, //窗口大小

420, //宽度一定要等于所有列宽的和,否则会看起来有空列

600,

hwnd, //父窗口句柄

NULL, //菜单句柄

hInstance, //实例句柄

NULL //创建参数

);

//也可以在对话框资源文件中以子控件的方式使用

CONTROL         "",IDC_LISTVIEW, "SysListView32", WS_BORDER | WS_TABSTOP

| LVS_REPORT | LVS_AUTOARRANGE | LVS_SHOWSELALWAYS | LVS_SHAREIMAGELISTS | LVS_SINGLESEL,

7,110,300,133

二、相关的函数操作

因为是SDK编程,所以对控件的操作是向控件发送SendMessage()来实现的

LISTVIEW中的相关消息为:

1、LVM_SETTEXTCOLOR 和 LVM_SETTEXTBKCOLOR 消息设定文本的前景和背景色

2、 LVM_GETNEXTITEM找到选中的行,对应ListView_GetNextItem宏将SendMessage打包为函数方式操作。

3、LVM_SETCOLUMNWIDTH设置列宽,对应ListView_SetColumnWidth

4、LVM_SETEXTENDEDLISTVIEWSTYLE设置扩展风格如:LVS_EX_FULLROWSELECT(选中一整行), LVS_EX_GRIDLINES(网络线),LVS_EX_CHECKBOXES(选择按钮),对应ListView_SetExtendedListViewStyle

5、LVM_INSERTCOLUMN插入新列,对应ListView_InsertColumn

6、LVM_INSERTITEM插入项目(行),对应ListView_InsertItem

7、LVM_SETITEM设置子项(行中的每列),对应ListView_SetItem

8、LVM_GETITEMCOUNT获取项数,对应ListView_GetItemCount

9、LVM_DELETEITEM删除项,对应ListView_DeleteItem

还有很多关于选中响应的消息就不列举了,可以在相应的头文件中去查找

c:/Program Files/Microsoft SDKs/Windows/v6.0A/Include/CommCtrl.h

三、相关的结构

//

//配置列属性

//

typedef struct _LVCOLUMN

{

//说明此结构中哪些成员是有效的,LVCF_FMT = fmt有效,

//LVCF_SUBITEM = iSubItem有效,LVCF_TEXT = pszText有效,LVCF_WIDTH = lx有效

UINT mask;

//列的对齐方式

int fmt;

//列的初始宽度,以后您可以发送消息LVM_SETCOLUMNWIDTH来改变列的宽度

int cx;

//列的标题

LPTSTR pszText;

//pszText所指向的缓冲区的大小

int cchTextMax;

//与列关联的子项的索引值,从0开始,要查询列的属性时可以发送LVM_GETCOLUMN消息,

//并在成员变量imask中指定LVCF_SUBITEM标志,

//列表控件将在iSubItem中返回插入时设定的iSubItem值

int iSubItem;

//与列关联的图像列表中指定图像的索引值

int iImage;

//第几列,0代表最左一列

int iOrder;

} LVCOLUMN, FAR *LPLVCOLUMN;

//

//配置项,通过向列表视图发送LVM_INSERTITEM消息来向其中添加项目

//

typedef struct _LVITEM

{

//说明LVITEM结构中哪些成员有效

UINT   mask;

//项目的索引值(可以视为行号)从0开始

int    iItem;

//子项的索引值(可以视为列号)从0开始

int    iSubItem;

//子项的状态,是否有焦点/高亮度显示/被选中(由于被剪切)/被选中等

//还包括以1为基数的索引用来代表是否处使用重叠/状态图标

UINT   state;

//状态有效的屏蔽位

UINT   stateMask;

//主项或子项的名称

LPTSTR pszText;

//pszText所指向的缓冲区大小

int    cchTextMax;

//关联图像列表中指定图像的索引值

int    iImage;

//程序定义的32位参数,当您给项目排序时使用。

//当您告诉列表视图对项目排序时,列表视图将成对地比较项目

//它将会把两个项目的lParam的值传给您,这样您就可以进行比较先列出那一个了

LPARAM lParam;

//表示图像位置缩进的单位

int iIndent;

} LVITEM, FAR *LPLVITEM;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/306088.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

蚂蚁调度AntJob-分布式任务调度系统

分布式任务调度系统,纯NET打造的重量级大数据实时计算平台,万亿级调度经验积累!面向中小企业大数据分析场景。开源地址:https://github.com/NewLifeX/AntJob使用教程:https://www.yuque.com/smartstone/blood/antjob体…

c语言怎么让图形界面单独显示,「分享」C语言如何编写图形界面

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼贴吧内经常有人问C语言是不是只能用于字符终端界面开发,不能用于图形界面。大家也都有回答,需要其他的库。MFC,GTK,QT。本人近期刚用GTK库加上纯C写成了第一个LINUX实用程序。现在与大…

如何在 ASP.NET Core 中 自定义中间件

ASP.NET Core 是一个跨平台,开源的,轻量级,高性能 并且高度模块化的web框架,同时扩展性也是非常强,你可以在 request -> response 请求管道中安插各种中间件来根据自己的场景定制化,比如说:监…

c语言电报关系的题目,c语言所有题目以跟答案.doc

c语言所有题目以跟答案判断题关系运算符<与的优先级相同。 N2.7&312的值是15. N3.在TurboC中&#xff0c;整型数据在内存中占2个字节。 YC语言本身不提供输入输出语句&#xff0c;输入输出操作是由函数实现的。 Y5.char [ ]“Very good”:是一个合法的为字符串数组赋值的…

ASP.NET Core Authentication and Authorization

最近把一个Asp .net core 2.0的项目迁移到Asp .net core 3.1&#xff0c;项目启动的时候直接报错:InvalidOperationException: Endpoint CoreAuthorization.Controllers.HomeController.Index (CoreAuthorization) contains authorization metadata, but a middleware was not …

android dialog 自定义布局,如何设置AlertDialog的自定义布局?

调用我的对话框:alertDialog showInfoDialog(message "$wrongPasscodeMessage\n$retryMessage")方法如下:fun FragmentActivity.showInfoDialog(message: String?): AlertDialog? {return try {val customLayout layoutInflater.inflate(R.layout.custom_layout…

ASP.NET Core 依赖注入-集成 Autofac

概述ASP.NET Core 支持依赖关系注入 (DI) 软件设计模式&#xff0c;这是一种在类及其依赖关系之间实现控制反转 (IoC) 的技术。默认服务容器是 Microsoft.Extensions.DependencyInjection 。内置的服务容器一般能满足简单的框架和部分消费者应用的需求。 建议使用内置容器&…

android 打开谷歌导航,国内开启google位置记录功能/android版google maps 7+上,恢复位置记录功能在国内使用(需root)...

android版google 地图在 7以后的版本上&#xff0c;位置记录功能在国内不能用了&#xff0c;提示本功能不能在中国使用。至少对本人&#xff0c;“位置记录”功能是非常有用的功能&#xff0c;尤其是骑车出行时记录自己的路线。目前还没找到替代产品。之前一段时间内恢复回旧版…

程序员过关斩将--少年派登录安全的奇幻遐想

“据说&#xff0c;这篇也是快餐&#xff0c;完全符合年轻人口味说到登录&#xff0c;无人不知无人不晓。每一个有用户体系的相关系统都会有登录的入口&#xff0c;登录是为了确认操作人的正确性。说到登录安全&#xff0c;其实是一个很伟大的命题&#xff0c;不过常用的手段也…

gif android 点击 加载,android 加载显示gif图片的解决方案

使用方法&#xff1a;1-把GifView.jar加入你的项目。2-在xml中配置GifView的基本属性&#xff0c;GifView继承自View类&#xff0c;和Button、ImageView一样是一个UI控件。如&#xff1a;android:layout_height"wrap_content"android:layout_width"wrap_content…

C# 9 新特性 —— 增强的 foreach

C# 9 新特性 —— 增强的 foreachIntro在 C# 9 中增强了 foreach 的使用&#xff0c;使得一切对象都有 foreach 的可能我们来看一段代码&#xff0c;这里我们试图遍历一个 int 类型的值思考一下&#xff0c;我们可以怎么做使得上面的代码编译通过呢&#xff1f;迭代器模式迭代器…

android系统休眠发广播,Android - BroadcastReceiver

BroadcastReceiverBroadcastReceiver&#xff0c;广播接收者&#xff0c;用来接收系统和应用的广播&#xff0c;并做出相应的处理&#xff0c;如电量过低时提示用户充电等&#xff1b;BroadcastReceiver 是 Android 的四大组件之一&#xff0c;分为 普通广播、有序广播、粘性广…

开源·共享·创新|2020年中国.NET开发者大会圆满收官!

“疫情无限续费”的2020年&#xff0c;对于14亿中国人而言&#xff0c;是必须习惯口罩长在来脸上的一年&#xff1b;是各种线下聚会&#xff0c;被迫数次延期、滞后、云上举办的一年&#xff1b;……而对于潜心修行&#xff0c;静蓄能量的中国.NET开发者而言&#xff0c;2020绝…

android+百度lbs云,百度——LBS.云 v2.0——云存储扩展字段——Android

今天要解决两个问题&#xff1a;1云存储扩展字段2上传的数据是乱码3android版本上传数据到云端使用了一段时间LBS云功能之后&#xff0c;随着对系统的熟悉&#xff0c;默认提供的字段&#xff0c;肯定无法满足需要。比如增加注释&#xff0c;价格&#xff0c;档次等字段的时候。…

年终将至,回顾我们一起走过的 2020

又到了年终末尾匆匆忙忙的 2020 似乎按下了倍速键一晃眼我们就从夏天走到了冬天在这不平凡的一年中我们同途共进也笑着成长让我们跟随着六大年度词条重温这一年我们共同经历的值得骄傲的瞬间吧&#xff01;点击文内高亮部分&#xff0c;阅读文章了解更多人才“倍”出星桥计划出…

android消息响应实验报告,android实验一实验报告-20210401011015.docx-原创力文档

Last revision on 21 December 2020Last revision on 21 December 2020Android实验一实验报告Android实验报告一姓名&#xff1a;丁军峰班级&#xff1a;信科12-3学号实验内容编写一个Android应用程序&#xff0c;实现对自己物品的管理&#xff0c;功能包括添加、删除和查询等实…

灵魂拷问:你和大佬,技术差距有多大?

今天咱们聊点技术以外的内容。前几天&#xff0c;有程序员在某个坛子上发帖吐槽&#xff0c;新来的应届生张嘴就是分布式&#xff0c;一堆框架&#xff0c;可代码根本不会写。马上有人跟贴说自己也遇到过这种情况&#xff0c;说之前自己遇到过一个应届生&#xff0c;开口闭口动…

android t跳转到fragment,Android 使用EventBus进行Fragment和Activity通信

本文介绍EventBus的基本使用&#xff0c;以及用于Fragment和Activity之间通信。github地址: https://github.com/greenrobot/EventBus 版本是 EventBus-2.4.0 releaseEventBus是基于订阅和发布的一种通信机制&#xff0c;使用流程如下&#xff1a;实例化EventBus对象注册订阅者…

达梦数据查询编码_查询数据库的编码方式

在Mysql中(1)查看Mysql数据库编码show variables like character_set_database 或者 show create database 数据库名称(2)查看Mysql中某张表的编码show create table 表名show create database 数据库名称、show create table 表名 &#xff0c;还能够显示建库和建表语句。(3)…

玩转git-flow工作流-分支解析

概述搞开发的相信大部分人git天天都在用&#xff0c;那么一般我们在实际工程当中&#xff0c;遵循一个合理、清晰的Git使用流程&#xff0c;是非常重要的。否则&#xff0c;每个人都提交一堆杂乱无章的commit&#xff0c;项目很快就会变得难以协调和维护。那么是如何来规范整个…