Windows程序设计17:Win32窗口高级列表控件的使用主动操作流程2


前言

Windows程序设计17:Win32窗口高级列表控件的使用主动操作流程2。


一、实现功能讲解

上一次博客包含了Win32窗口高级列表控件的使用主动操作流程的一些使用方法。分别介绍了按钮和Report消息列表的创建以及使用。这次将按钮和Report消息列表联合起来,按下按钮后来进行一些操作。

1.实现点击按钮插入一行

实现点击按钮2后在列表上方插入一行
在这里插入图片描述
运行后得到如下结果
在这里插入图片描述
点击按钮2后插入行
在这里插入图片描述

2.点击按钮把界面编辑框的文本插入到列表中

首先创建一个编辑框,要注意在利用CreateWindow创建编辑框前要先定义编辑框ID和保存返回的窗口句柄

hEditWnd1 = CreateWindow(WC_EDIT, _T("实现的编辑框"), WS_CHILD | WS_VISIBLE | WS_BORDER, 600, 250, 100, 100, hWnd, (HMENU)IDC_LIST_1, NULL, NULL); //创建 子控件

这里实现点击按钮1将编辑框内的内容加入到列表中,利用函数GetWindowText获取编辑框内的内容。函数原型如下

int GetWindowText(
  HWND  hWnd,      // 目标窗口的句柄
  LPTSTR lpString, // 接收文本的缓冲区
  int   nMaxCount  // 缓冲区的最大字符容量(包括终止符 '\0')
);

参数说明:
HWND hWnd为要获取文本的窗口句柄(如按钮、编辑框、窗口本身)。

LPTSTR lpString为指向接收文本的缓冲区,需提前分配足够内存。

int nMaxCount为缓冲区能存储的最大字符数(含 \0)。若文本长度超过此值,会被截断。

返回值:成功时返回 实际复制的字符数(不包括 \0)。失败时返回 0,可通过 GetLastError() 获取错误码。
在这里插入图片描述
运行后如图
在这里插入图片描述
点击按钮1后插入编辑框内的信息
在这里插入图片描述
由于之前只插入了第一行,因此目前只能在第一行的每个列更改列表信息。其他行没有插入(初始化),无法直接利用函数ListView_SetItemText直接更改其他行的列表信息,需要先插入其他行再进行。

3.获取列表有多少行并在最后一行后面插入行

利用函数ListView_GetItemCount获取列表有多少行,函数原型为

int ListView_GetItemCount(HWND hwnd);

参数HWND hwnd: ListView 为控件的句柄。

返回值:返回 ListView 控件中的项目数量。如果出错,返回值为 0。

利用函数SNDMSG在指定位置插入行,函数原型为(实际上为SendMessage函数的别名)

LRESULT SNDMSG(HWND hWnd, 
UINT Msg, 
WPARAM wParam, 
LPARAM lParam);

参数HWND hWnd: 目标窗口或控件的句柄。

参数UINT Msg: 要发送的消息(例如 WM_COMMAND、LB_GETCOUNT 等)。

参数WPARAM wParam: 消息的附加参数,具体含义取决于消息类型。

参数LPARAM lParam: 消息的附加参数,具体含义取决于消息类型。

返回值取决于发送的消息类型。通常,返回值是消息处理的结果。
在这里插入图片描述
运行得到如下结果
在这里插入图片描述
点击按钮1后成功实现
在这里插入图片描述

4.删除指定行

利用ListView_DeleteItem进行行的删除,函数原型为

BOOL ListView_DeleteItem(HWND hwnd, 
int iItem);

参数HWND hwnd: ListView控件的句柄。

参数int iItem: 要删除的项的索引(从 0 开始)。

返回值:如果成功删除项,返回 非零值。如果失败,返回 0。

将按钮2的功能改为点击删除指定行
在这里插入图片描述
可以进行删除
在这里插入图片描述
删除后为
在这里插入图片描述

5.选择整行

目前的程序不能选择整行,第二列没有被选上
在这里插入图片描述
可以利用函数ListView_SetExtendedListViewStyle来实现整行选择,函数原型为

DWORD ListView_SetExtendedListViewStyle(HWND hwnd, DWORD dwExStyle);

参数HWND hwnd: ListView 控件的句柄。

参数DWORD dwExStyle: 要设置的扩展样式(可以是单个样式或样式的组合)。

返回值:返回 ListView 控件之前的扩展样式。
在这里插入图片描述
此时可以整行选择
在这里插入图片描述

二、整体代码

该项目的整体代码分享如下

#include<windows.h>
#include<tchar.h>
# include<commctrl.h>

static TCHAR szWindowClass[] = _T("WindowClass");
static TCHAR szTitle[] = _T("窗口程序示例");
PAINTSTRUCT ps;
HDC hdc;
TCHAR greeting[] = _T("各位晚上好");
INT IDC_BUTTON_1 = 200
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

智能与优化

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值