我必须创建一个包含TreeView的C ++ VSPackage。我在工具箱窗口的项目资源脚本(* .rc)的默认对话框窗口中添加了一个。问题是我不知道如何添加项目。
我查看了许多网站,但他们有C#代码或其他类型的项目。
我找到了一个由Song Ho Ahn制作的项目,以及可以在本网站底部找到的源代码TreeView。
我试图转到TreeView属性窗口,看看是否有什么东西,所以我可以添加项目,然后找到替换它们的方法,但没有。我试图使用他编写的代码来帮助我找到问题的解决方案,但我找不到它。也许它是“处理程序”和“父”,我不知道如何使用。
void set(HWND parent, int id, bool visible=true)
{
this->parent = parent;
handle = GetDlgItem(parent, id);
if(!visible) disable();
}
我想提一下,我是VSPackage的初学者,之前我没有做过这么大的项目。
如果有人可以向我解释该怎么做,请告诉我一条道路甚至说我很愚蠢而且解决方案很简单,我会非常感激。
答案 0 :(得分:0)
在您发布的代码段中,您使用的是原生WIN32 API。因此,您可以查看TVM_INSERTITEM消息的文档。
这是一个向TreeView控件添加单个条目的小片段(无论是由资源脚本创建还是调用CreateWindow(..)):
TVITEM tvi;
TVINSERTSTRUCT tvins;
HTREEITEM hItem;
/* setup new item */
tvi.mask = TVIF_TEXT; // just text
tvi.pszText = "Hello TreeView!";
tvi.cchTextMax = 0; // ignored if creating the item
/* setup insertion structure of item */
tvins.hParent = TVI_ROOT; // insert item at root level
tvins.item = tvi; // item description setup above
tvins.hInsertAfter = NULL; // instert on top of the tree view
hItem = (HTREEITEM)SendMessage(GetDlgItem(hWnd, IDC_TREEVIEW), // update parameters of GetDlgItem(..) according to your code
TVM_INSERTITEM,
0,
(LPARAM)(LPTVINSERTSTRUCT)&tvins);
if (hItem == NULL)
{
/* something went wrong */
}