Windows图形界面(GUI)-DLG-C/C++ - 列表视图(ListView)

目录

列表视图(ListView)

控件类型

初始化控件环境

示例代码


列表视图(ListView)

控件类型
  • 详细信息视图(Report View):数据以列的形式显示,每个项目可以有多个属性或字段。

  • 图标视图(Icon View):数据以图标的形式显示,通常用于文件和文件夹等对象。

初始化控件环境
  • 包含公共控件的头文件

    #include <commctrl.h>
    #pragma comment(lib, "comctl32.lib")

  • 调用InitCommonControlsEx函数

示例代码
cpp 复制代码
	case WM_INITDIALOG:
	{
		// 初始环境
		INITCOMMONCONTROLSEX initComm = { 0 };
		initComm.dwSize = sizeof(INITCOMMONCONTROLSEX);
		initComm.dwICC = ICC_WIN95_CLASSES;
		InitCommonControlsEx(&initComm);

		// 初始控件	
		HWND hListView = GetDlgItem(hwnd, IDC_LIST5);
		ListView_SetExtendedListViewStyle(hListView, ListView_GetExtendedListViewStyle(hListView) | LVS_EX_FULLROWSELECT);
		
		LVCOLUMN lvc = { 0 };
		lvc.mask = LVCF_TEXT | LVCF_WIDTH | LVCF_SUBITEM;
		lvc.pszText = (LPWSTR)TEXT("进程标识");
		lvc.cx = 150;
		lvc.iSubItem = 0;
		ListView_InsertColumn(hListView, 0, &lvc);

		lvc.mask = LVCF_TEXT | LVCF_WIDTH | LVCF_SUBITEM;
		lvc.pszText = (LPWSTR)TEXT("进程文件");
		lvc.cx = 150;
		lvc.iSubItem = 1;
		ListView_InsertColumn(hListView, 1, &lvc);

		LVITEM lvi = { 0 };
		lvi.mask = LVIF_TEXT;
		lvi.iItem = 0;
		lvi.iSubItem = 0;
		lvi.pszText = (LPWSTR)TEXT("1024");
		ListView_InsertItem(hListView, &lvi);
		ListView_SetItemText(hListView, 0, 1, (LPWSTR)TEXT("C:\\Windows\\System32\\notepad.exe"));

		lvi.mask = LVIF_TEXT;
		lvi.iItem = 1;
		lvi.iSubItem = 0;
		lvi.pszText = (LPWSTR)TEXT("2048");
		ListView_InsertItem(hListView, &lvi);
		ListView_SetItemText(hListView, 1, 1, (LPWSTR)TEXT("C:\\Windows\\System32\\calc.exe"));

		return TRUE;
	}

	case WM_NOTIFY:
	{
		NMHDR* Info = (NMHDR*)lParam;

		switch (Info->idFrom)
		{
			case IDC_LIST5:
			{
				if (Info->code == NM_CLICK)
				{
					INT nIndex = ListView_GetNextItem(Info->hwndFrom, -1, LVNI_SELECTED);
					TCHAR szBuffer[0xFF] = { 0 };
					ListView_GetItemText(Info->hwndFrom, nIndex, 0, szBuffer, 0xFF);
					OutputDebugString(szBuffer);
				}
			}
		}

		return TRUE;
	}
相关推荐
程序员阿龙14 分钟前
基于 ASP.NET的教材管理信息系统的设计与实现(最新定制开发,阿龙原创设计)✅
java·开发语言·spring boot·后端·asp.net·课程设计·计算机毕业设计
胜天半子_王二_王半仙14 分钟前
原型模式详解
开发语言·c++·原型模式
CCTV果冻爽1 小时前
LuaJit分析(六)luajit -bl 命令分析
java·开发语言
大浪淘沙胡2 小时前
C# 实现傅里叶变化(DFT)
开发语言·c#·dft
屋外雨大,惊蛰出没2 小时前
适配器模式
开发语言·适配器模式·23种设计模式
sukalot3 小时前
windows C++-Lambda表达式(五)
开发语言·c++
CCTV果冻爽3 小时前
LuaJit分析(十一)去除string.dump函数
java·开发语言
at night4 小时前
Java的动态代理
java·开发语言
烦恼暂时丢掉6 小时前
POP3(工作模式和实现原理)
开发语言·github·php
南七澄江6 小时前
Python+tkinter实现俄罗斯方块游戏
开发语言·前端·python·游戏