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

时间:2012-11-14 23:30:56

标签: c++ windows visual-c++

在我的数据库中,我有一个带有guid和name字段的表。 guid是我的主要钥匙。我可以使用“名称”数据字段查询表并填充树。我的问题是名称字段不是唯一的,因此很难跟踪它是哪个guid +名称组合。例如,我的树视图可能如下所示:

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

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

2 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:1)

您可以使用Tag属性来存储GUID。见Control.Tag Property

已编辑:对于MFC CTreeCtrl,请参阅CTreeCtrl::SetItemData
它仅存储32位值,因此要跟踪您的标记,您必须创建所有标记的索引 - 您可以使用向量来存储标记,并使用SetItemData指向向量中的标记。 / p>