您当前的位置: 首页 >  c++

插件开发

暂无认证

  • 1浏览

    0关注

    492博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

C++-Win32-列表编辑-获取列表内容-获取列表行数-修改列表内容-SysListView32

插件开发 发布时间:2022-06-09 08:53:48 ,浏览量:1

文章目录
    • 1.GetDlgItem函数
    • 2.SendMessage函数--编辑列表
    • 3.列表增加专用宏函数

1.GetDlgItem函数

  根据窗口控件ID获取对话框窗口句柄。

WINUSERAPI
HWND
WINAPI
GetDlgItem(
    _In_opt_ HWND hDlg,
    _In_ int nIDDlgItem);
2.SendMessage函数–编辑列表

  LVM_GETITEMTEXT消息获取窗口内容,LVM_GETITEMCOUNT获取行数,LVM_SETITEMTEXT修改内容,LVM_INSERTITEM插入一项。

#include 
#include 
#include 
#include "stdio.h"
#include 
#include 
#include 
#include 

//在列表中增加一行
static void ListAddOneFile(HWND hDlgWnd,std::wstring filename)
{
	//获取列表句柄
	HWND listHWnd = ::GetDlgItem(hDlgWnd, 1000);

	//列表中增加一行
	LVITEM lvitem;
	lvitem.mask = LVIF_TEXT;
	lvitem.pszText = L"1";
	lvitem.cchTextMax = 512;
	lvitem.iItem = 0;
	lvitem.iSubItem = 0;
	int r = ::SendMessage(listHWnd, LVM_INSERTITEM, 0, (LPARAM)&lvitem);

	//修改列表内容
	lvitem.iSubItem = 1;
	wchar_t pItem[256] = { 0 };
	wsprintf(pItem, _T("%s"), filename.c_str());//应用
	lvitem.pszText = pItem;
	::SendMessage(listHWnd, LVM_SETITEMTEXT, (WPARAM)0, (LPARAM)&lvitem);
}

void Test(HWND hDlgWnd)
{
	//获取列表句柄
	HWND listHWnd=::GetDlgItem(hDlgWnd, 1000);

	//获取列表第一行数据
	wchar_t pItem[256] = { 0 };
	LVITEM lvitem;
	lvitem.cchTextMax = 512;
	lvitem.iSubItem = 2;
	lvitem.pszText = pItem;
	int iItem = 0;
	::SendMessage(listHWnd, LVM_GETITEMTEXT, (WPARAM)iItem, (LPARAM)&lvitem);

	//总行数
	int count = SendMessage(listHWnd, LVM_GETITEMCOUNT, 0, 0);

	//修改列表
	wsprintf(pItem, _T("%d"), 123);//应用
	::SendMessage(listHWnd, LVM_SETITEMTEXT, (WPARAM)iItem, (LPARAM)&lvitem);

	std::wstring flag = pItem;
	if (!flag.empty())
	{
		return true;
	}
	else
	{
		return false;
	}
}


3.列表增加专用宏函数
#include 

void Test(HWND hDlgWnd)
{
	//获取列表句柄
	HWND listHWnd = ::GetDlgItem(hDlgWnd, 1000);

	//插入一行
	LVITEM lvItem = { 0 };
	ListView_InsertItem(listHWnd, (LPARAM)&lvItem);	
	//修改数据
	char pItem[256] = { 0 };
	sprintf(pItem, _T("%s"), filename.c_str());//应用
	ListView_SetItemText(listHWnd, 0, 1, pItem);

	//获取数据
	char state_str[256] = { 0 };
	ListView_GetItemText(listHWnd, 0, 1, state_str, 256);
	
	//获取列表行数
	int count = ListView_GetItemCount(listHWnd);
}

  希望能够帮到需要原生代码的朋友。

关注
打赏
1665481431
查看更多评论
立即登录/注册

微信扫码登录

0.0377s