0

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

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

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

4

2 回答 2

3

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

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

于 2012-11-14T23:42:28.050 回答
1

您可以使用Tag属性来存储您的 GUID。请参阅Control.Tag 属性

已编辑:对于 MFC CTreeCtrl,请参见CTreeCtrl::SetItemData
它只存储 32 位值,因此要跟踪您的标签,您必须创建所有标签的索引——您可以使用向量来存储标签和SetItemData指向标签的指针在向量中。

于 2012-11-14T23:44:24.203 回答