c++ - 从记录集或数据库查询填充时,如何跟踪树中的项目?

标签 c++ windows visual-c++

在我的数据库中,我有一个带有 guid 和名称字段的表。 guid 是我的主键。我可以查询表并使用“名称”数据字段填充树。我的问题是名称字段不是唯一的,因此很难跟踪它是哪个 guid + 名称组合。例如,我的 TreeView 可能看起来像这样:

-Cities in America
 |
 -Cities in Oregon
      |
      +Milwaukee
      +Salem
 |
 -Cities in Wisconsin
      |
      -Milwaukee
      -Madison

俄勒冈州密尔沃基市的 guid 与威斯康星州的不同。当用户单击 Milwaukee 中的任何一个时,我如何才能跟踪选择了哪一个?我需要知道该选择的 GUID,以便我可以重新查询数据库并获取与该城市相关的其他字段。

最佳答案

当您将一个项目插入到 TreeView 中时,您可以包含一个 lParam。它只是一个 32 位项目,因此您不能直接存储 GUID,但您可以(例如)在将项目插入树中时创建一个 GUID 数组,并将索引存储到 lParam 中的数组中。

当用户点击一个项目时,将选择该项目,您将收到一条 TVN_SELCHANGED 消息,其中将包含(除其他事项外)指向 TVITEM 的指针,该指针将包含您插入的 lParam 作为元素。然后您可以使用它来查找您的 GUID。

关于c++ - 从记录集或数据库查询填充时,如何跟踪树中的项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13389218/

相关文章:

C# IteropServices 与 C++ dll - 在 excel 中工作?

visual-c++ - #pragma pack(8) 应该如何工作?

windows - 如何在 Visual Studio C++ 项目中指定 "any Windows SDK version greater than 10.0"?

c++ - 由于 WTTlog.DLL 导致的运行时错误?

c++ - 将此 C++ 代码分解为单独的类规范文件和函数定义文件?

c++ - 列表元素被替换而不是插入

c++ - 总线错误 10 - char * array

windows - 如果名称匹配,则获取名称较长的文件

windows - 无法在 Windows 10 LTSC 上安装 winget-cli

c# - .NET 运行时 (CLR)、JIT 编译器究竟位于何处?