如何填充资源脚本中的TreeView

时间:2014-10-20 18:19:13

标签: c++ treeview items vspackage

我必须创建一个包含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的初学者,之前我没有做过这么大的项目。

如果有人可以向我解释该怎么做,请告诉我一条道路甚至说我很愚蠢而且解决方案很简单,我会非常感激。

1 个答案:

答案 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 */
}