在我的数据库中,我有一个带有guid和name字段的表。 guid是我的主要钥匙。我可以使用“名称”数据字段查询表并填充树。我的问题是名称字段不是唯一的,因此很难跟踪它是哪个guid +名称组合。例如,我的树视图可能如下所示:
-Cities in America
|
-Cities in Oregon
|
+Milwaukee
+Salem
|
-Cities in Wisconsin
|
-Milwaukee
-Madison
俄勒冈州的密尔沃基市与威斯康星州的指南不同。当用户点击密尔沃基时,如何跟踪选择哪一个?我需要知道选择的内容,以便我可以重新查询数据库并获取与该城市相关的其他字段。
答案 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>