首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何将userdata附加到列表视图中的每个项目?C++ Win32

在C++ Win32中,要将userdata附加到列表视图中的每个项目,可以按照以下步骤进行操作:

  1. 创建一个列表视图控件:使用ListView_Create函数创建一个列表视图控件,并将其添加到窗口中。
  2. 定义列表视图的列:使用ListView_InsertColumn函数定义列表视图的列,可以设置列的标题、宽度等属性。
  3. 添加项目到列表视图:使用ListView_InsertItem函数将项目添加到列表视图中。可以使用LVITEM结构体来设置项目的各种属性,包括文本、图标、子项等。
  4. 附加userdata到每个项目:在添加项目到列表视图时,可以使用LVITEM结构体的lParam字段来附加userdata。将userdata转换为LPARAM类型,并将其赋值给LVITEM结构体的lParam字段。

以下是一个示例代码,演示如何将userdata附加到列表视图中的每个项目:

代码语言:cpp
复制
// 创建列表视图控件
HWND hListView = CreateWindowEx(0, WC_LISTVIEW, NULL, WS_VISIBLE | WS_CHILD | LVS_REPORT, 
    x, y, width, height, hWndParent, (HMENU)ID_LISTVIEW, hInstance, NULL);

// 定义列表视图的列
LV_COLUMN lvColumn;
lvColumn.mask = LVCF_TEXT | LVCF_WIDTH;
lvColumn.pszText = "Column 1";
lvColumn.cx = 100;
ListView_InsertColumn(hListView, 0, &lvColumn);

// 添加项目到列表视图
LVITEM lvItem;
lvItem.mask = LVIF_TEXT | LVIF_PARAM;
lvItem.iItem = 0;
lvItem.iSubItem = 0;
lvItem.pszText = "Item 1";
lvItem.lParam = (LPARAM)userData1; // 将userdata1附加到项目
ListView_InsertItem(hListView, &lvItem);

lvItem.iItem = 1;
lvItem.iSubItem = 0;
lvItem.pszText = "Item 2";
lvItem.lParam = (LPARAM)userData2; // 将userdata2附加到项目
ListView_InsertItem(hListView, &lvItem);

// 获取附加的userdata
LPARAM userData = ListView_GetItemData(hListView, itemIndex);

在上述示例中,我们创建了一个列表视图控件,并定义了一个列。然后,我们使用LVITEM结构体添加了两个项目,并将不同的userdata附加到每个项目中。最后,我们可以使用ListView_GetItemData函数来获取附加的userdata。

请注意,这只是一个简单的示例,实际应用中可能需要根据具体需求进行适当的修改和扩展。

腾讯云相关产品和产品介绍链接地址:

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

图元装配和光栅化

在上图中绘制了端点为**(V0,V1、(V1,V2)、(V2,V4)、(V3,V4)和(V4,V0)** 线段。...使用图元重启,可以 通过在索引列表中插入一个特殊索引来重启一个用于索引绘图调用(glDraw***)图元,这个 特殊索引 就是该索引类型 最大可能索引。...为了连接不同网格而添加 元素索引(或者退化三角形)数量取决与每个网格是三角扇形还是三角形条带以及每个条带中定义索引数量。...口变换 口是一个二维矩形窗口区域,是OpenGL ES 渲染操作最终显示地方。...void glViewport(GLint x, GLint y, GLsizei w, GLsizei h) x,y : 指定口左下角窗口坐标,以像素数表示 w,h : 指定宽度和高度,值必须大于

3.1K20

WIN32 API —— 最简单Windows窗口封装类

1 开发语言抉择 1.1 关于开发Win32 程序语言选择 C还是C++ 在决定抛弃MFC,而使用纯Win32 API 开发Window桌面程序之后,还存在一个语言选择,这就是是否使用C++...就本人理解而言, 对于巨大型项目,还是使用纯C来架构更加稳妥; 对于中小型项目来说,C++可能更方便快捷。由于目前做是中小项目,所以决定把C++作为主要开发语言。...::SetWindowLong(hWnd, GWL_USERDATA, (LONG)pObj); // 通过USERDATA把HWND和C++对象关联起来 }...这里我们采用了C++虚表指针,每一个有虚函数类都拥有自己独立虚表,而这个虚表指针又在每个实例中存储。同一个类不同实例共享一个虚表,所以这给了我们区分对象所属C++机会。...而且C++对象死掉之前,需要先把窗口对象杀死陪葬。 (3)C++对象和窗口对象彼此引用。C++对象通过成员变量hWnd引用窗口对象,窗口对象则通过GWL_USERDATA附加数据块指向C++对象。

2.1K20
  • qmake手册(Qt5.9.3)

    以下片段说明了如何将列表分配给变量: HEADERS = mainwindow.h paintwidget.h 变量中列表按以下方式扩展: SOURCES = main.cpp mainwindow.cpp...创建Visual Studio项目文件 本节介绍如何将现有的qmake项目导入到Visual Studio中。...windows 目标是一个Win32窗口应用程序(仅适用于应用程序)。合适包含路径,编译器标志和库将自动添加到项目中。 console 目标是一个Win32控制台应用程序(仅适用于应用程序)。...列表每个项目通常使用提供有关安装位置信息属性进行定义。...每个源文件扩展名都被替换为.o(Unix)或.obj(Win32)。您可以将对象添加到列表中。 OBJECTS_DIR 指定应放置所有中间对象目录。

    5.7K20

    c++反射深入浅出 - 4.基于反射Lua中间层实现

    本篇中, 我们将以lura库为例(笔者之前项目使用Lua bridge实现), 介绍如何以C++反射作为基础设施, 以更简洁方式来实现一版luabridge..... 1.2 属性处理 这部分实现基本都严重依赖下一节中c++对象到userdata包装, 核心功能是依托于自定义meta get/set方法, 完成对userdata中对应C++对象某成员变量获取.... 1.3 c++对象-> userdata 这部分更多是作为一个对象容器载体, 然后通过meta table来方便lua访问这个载体, 主要提供函数获取, 属性获取等功能, 基本上每个bridge...__call __index 用于完成对类静态函数和静态变量进行访问, 我们可以从上图中看到该功能实现被关联到了c++函数StaticMemberMetaIndex()函数上..... 3.1.2 提供实例成员访问meta table 如上图所示, 对于每个C++对象, 挂接meta table就包含了: 1.

    1.1K10

    c++反射深入浅出 - 基于反射Lua中间层实现

    本篇中, 我们将以lura库为例(笔者之前项目使用Lua bridge实现), 介绍如何以C++反射作为基础设施, 以更简洁方式来实现一版luabridge..... 1.2 属性处理 这部分实现基本都严重依赖下一节中c++对象到userdata包装, 核心功能是依托于自定义meta get/set方法, 完成对userdata中对应C++对象某成员变量获取.... 1.3 c++对象-> userdata 这部分更多是作为一个对象容器载体, 然后通过meta table来方便lua访问这个载体, 主要提供函数获取, 属性获取等功能, 基本上每个bridge...__call __index 用于完成对类静态函数和静态变量进行访问, 我们可以从上图中看到该功能实现被关联到了c++函数StaticMemberMetaIndex()函数上..... 3.1.2 提供实例成员访问meta table 如上图所示, 对于每个C++对象, 挂接meta table就包含了: 1.

    94520

    qmake:变量手册

    Qt 库正确包含和库路径将自动添加到项目中。这是默认定义。 x11:目标是 X11 应用程序或库。正确包含路径和库将自动添加到项目中。 windows:目标是一个 Win32 窗口应用程序。...正确包含路径、编译器标志和库将自动添加到项目中。 console:目标是一个 Win32 控制台应用程序。正确包含路径、编译器标志和库将自动添加到项目中。...列表每个项目通常都定义有提供有关安装位置信息属性。...每个源文件扩展名被替换为 .o (Unix) 或 .obj (Win32)。 可以将对象添加到列表中。 43、OBJECTS_DIR 指定应放置所有中间对象目录。...使用此变量指定每个子目录都必须包含其自己项目文件。 建议每个子目录中项目文件与子目录本身具有相同基本名称,因为这样可以省略文件名。

    3.8K20

    C++反射:全方位解读Lura库前世今生!

    (二)属性处理 这部分实现基本都严重依赖下一节中c++对象到userdata包装,核心功能是依托于自定义meta get/set方法,完成对userdata中对应C++对象某成员变量获取。...(三)c++对象->userdata 这部分更多是作为一个对象容器载体,然后通过meta table来方便lua访问这个载体,主要提供函数获取,属性获取等功能,基本上每个bridge库都会有自己实现...&emsp不过它其实很好探索了c++反射,怎么作为底层来支撑跨语言bridge问题,至少基于它现有的实现,我们通过阅读理解相关代码,可以有效评估如果结合c++反射,我们lua bridge层应该如何来设计才是比较符合项目需要...(一)lura核心机制简述 lura整体代码因为各种实际项目需求,还是比较多,不过核心机制相关代码比较简单,上图中像: 静态类成员访问 成员函数访问 成员变量访问 这几个功能都是由两个特定构造...提供实例成员访问meta table 如上图所示,对于每个C++对象,挂接meta table就包含了: __index __newindex __gc 等元方法,这样在我们对类对象进行函数调用或者成员变量访问时候

    1.4K20

    使用vs2015编写c语言方法

    选择“Win32控制台应用程序”,填写好项目名称,选择好存储路径,点击“确定”按钮即可。...如果你安装是英文版 VS2015,那么对应项目类型是“Win32 Console Application”。另外还要注意,项目名称和存储路径最好不要包含中文。...小小提示:C++是在C语言基础上进行扩展,C++已经包含了C语言所有内容,所以大部分 IDE 只有创建C++文件选项,没有创建C语言文件选项。...但是这并不影响使用,我们在填写源文件名称时把后缀改为.c即可,编译器会根据源文件后缀来判断代码种类。上图中,我们将源文件命名为hello.c。...虽然这个程序非常简单,但是你已经越过了第一道障碍,学会了如何编写代码,如何将代码生成可执行程序,这是一个完整体验。

    1.5K41

    CMake常用命令一些整理

    ) 1.2 定义工程名称 #定义工程名称 project(项目名称) 例如: project(MyTest) 1.3 显示定义变量 set(var [value]) 例如: # 第一种用法,生成代码文件列表...lib库 1.13 file语法 1.13.1 将文件夹所有的类型文件添加到文件列表 例如将当前文件夹下所有.cpp文件文件名加入到MAIN_SRC中,将当前文件夹下所有.h加入到MAIN_HDR中.../src/*.cpp) file(GLOB MAIN_HDR ${CMAKE_CURRENT_SOURCE_DIR}/src/*.h) 1.13.2 递归搜索该文件夹,将文件夹下(包含子目录)符合类型文件添加到文件列表...: add_compile_options命令添加编译选项是针对所有编译器(包括c和c++编译器),而set命令设置CMAKE_C_FLAGS或CMAKE_CXX_FLAGS变量则是分别只针对c和c...Please use a different C++ compiler.") endif() 1.23 CMake生成VS解决方案将项目放置在设定文件夹下 例如,我们在工程中引用了许多第三方开源库,这些库源码与自己所写代码需要进行区分和隔离

    1.6K10

    ue4 插件开发(ue4性能优化)

    第三方库引入 牛刀小试 创建Actor到视图插件 插件打包 插件发布 常见问题 插件项目案例 UE4插件扫盲 UE4插件是什么 UE4引擎和UE4项目是由各个模块组成,其主要编程语言是C++。...庞大UE4引擎各模块相互参差作用,所以想要读懂并拆解并非易事,而创建UE4游戏项目实则只引入了引擎部分模块,再想想如果很多游戏项目都需要用到这一个自定义功能时,是不是每个项目都要开发一次这个功能,个人或者一家公司内部还好...文件:插件项目配置文件,JSON格式 .Build.cs文件:每个 .build.cs 文件声明派生自 ModuleRules 基类类,并设置属性控制器从构造函数进行编译方式。...之后就可以在你代码中#include 第三方(.h)文件,使用其中功能了。 牛刀小试 创建Actor到视图插件 新建UE4 C++项目。 在UE4编辑器菜单栏Edit中打开Plugins。...删除插件Intermediate和Source文件夹中Public和Private文件夹,只保留.Build.cs文件,修改.uplugin文件 C++项目 删除插件Source文件夹中Public

    3.3K21

    学姐叫我看 CSS 新出容器查询,然后把公共组件重构成响应式

    当我们在设计UI时以这种心态思考时,我们可以开始考虑组件不同变体,这些组件依赖于它们父宽度。 在下面的图中,请注意文章组件每个变化是如何以特定宽度开始。...与开发人员沟通 良好沟通是项目成功重要因素。作为一名设计人员,我们应该提供关于应该在何处使用组件变体指导。它可以是一个完整页面设计,也可以是一个显示如何使用每个组件简单图。...注意我是如何将每个变体映射到一个特定上下文,而不是一个口。为了进一步证明这一点,我们配合 CSS网格一起使用时,组件行为会有何不同。...CSS容器查询用例 我们来探索一些可以使用CSS容器查询实现用例。 聊天列表 我在Facebook messenger上看到了这种模式。聊天列表根据口宽度改变。...当有足够空间时,清单将展开并显示每个用户名称。聊天列表父元素可以是动态调整大小元素(例如:使用CSS口单元,或CSS比较函数)。

    2.2K30

    NXPS32K144如何将静态库文件添加到 S32DS工程中?

    来源:技术让梦想更伟大 作者:李肖遥 我们经常使用静态库或者动态库,那么在NXPs32k144使用中,如何将静态库文件 (*.a) 添加到 S32 Design Studio GCC 项目中呢?...本文介绍两种方法,这些方法在库更新如何反映到项目构建过程中意义上彼此不同。...1添加一个不依赖于可执行(elf)文件静态库 这种方法假设库不会改变,库更新不会触发项目重建过程,如果库更改,则需要手动清理项目(假设没有其他源文件已更改),并且下一个构建链接更新库。...- “触及”,有时需要触发项目重建,在这种情况下库应添加到不同项目对话框中: 点击Project Properties -> C/C++ Build -> Settings -> Standard...S32DS C Linker -> Miscellaneous -> Other objects, 如下图 “Other objects”列表项目被传播到 USER_OBJS makefile 变量中

    5.1K10

    翻译qmake文档(四) Building Common Project Types

    你可以在.pro文件里使用这些变量指定应用程序相关信息。 HEADERS -应用程序头文件列表。 SOURCES -应用程序c++源文件列表。...FORMS - 应用程序UI文件列表(用Qt Designer创建) LEXSOURCES -应用程序Lex 源文件列表 YACCSOURCES - 应用程序Yacc 源文件列表 TARGET ...它默认是项目文件名称。(如果需要扩展名,会自动添) DESTDIR - 存放目标可执行程序文件夹 。 DEFINES - 应用程序需要额外添加预处理定义列表。...TESTARGS 每附加到每个测试命令附加参数。例如,它可能有用传递附加参数从测试设置输出文件和格式化。...可以通过下面的方式调用: make all 在项目文件里可以把build_all选项添加到CONFIG变量,用来确保项目默认是在两种模式下生成: CONFIG += build_all 这样允许Makefile

    936100

    Python3学习笔记 | 二十二、Python模块-模块宏伟蓝图

    :属性可以认为是变量(函数名也算是变量) 2、导入和属性 下图中,main.py是顶层文件,part1.py和part2.py是模块。...2、PYTHONPATH目录 Python会对此环境变量(如果你设置了的话)从左至右搜索导入模块,PYTHONPATH是设置包含Python程序文件目录列表,这些目录可以是用户定义,或平台特定目录名...因为这些一定会被搜索,通常是不需要添加到PYTHONPATH上。...PYTHONPATH设置方式,跟其他环境变量设置方式相同,每个路径之间使用分号隔开(;),.pth设置方式就是之前所说那些目录里创建文件。...import b时候,可以导入文件为: 1、b.py源代码文件 2、b.pyc字节码文件 3、导入文件名为b文件夹 4、编译扩展模块(通常用C或C++来编写),导入时使用动态链接(例如类Unix系统

    71820
    领券