【问题标题】:Inserting item in TreeView在 TreeView 中插入项目
【发布时间】:2014-08-02 07:13:10
【问题描述】:

我在拆分窗口中创建了两个窗格,一个用于树视图,另一个用于列表视图。 在拆分器窗口中创建这些窗格后,我不知道如何将项目添加到树视图和列表视图。

CXTreeView 是从 CTreeView 派生的,CXListView 是从 CListView 派生的。 CXTreeView 用于创建左窗格,即树,CXTreeView 用于创建右窗格,即列表。

我是这样创建的:

int CTreeWnd:: OnCreate(LPCREATESTRUCT lpCreateStruct)
{
    if(CWnd::OnCreate(lpCreateStruct) == -1)
        return -1;


    m_oSplitterWnd = DEBUG_NEW CXSplitterWnd;
    if(!m_oSplitterWnd.CreateStatic(this, 1, 2))
    {
        TRACE0("Failed to create splitter\n");
        return -1;
    }

    m_oSplitterWnd.SetLeftRTPane(RUNTIME_CLASS (CXTreeView));
    m_oSplitterWnd.SetRightRTPane(RUNTIME_CLASS (CXListView));

    if(!m_oSplitterWnd.CreateView(0, 0, m_oSplitterWnd.GetLeftRTPane(), CSize(250, 100), NULL)||
    !m_oSplitterWnd.CreateView(0, 1, m_oSplitterWnd.GetRightRTPane(), CSize(100, 100), NULL))
    {
        TRACE0("Failed to create views in splitter\n");
    return -1;
    }
    return 0;
}

请帮帮我。

【问题讨论】:

    标签: visual-c++ mfc


    【解决方案1】:

    您首先需要从拆分器中获取您的视图,您可以这样做:

    CXTreeView *pTreeView = (CXTreeView*)m_oSplitterWnd.GetPane(0, 0);
    CXListView *pListView = (CXListView*)m_oSplitterWnd.GetPane(0, 1);
    

    然后,从这些视图中,访问底层的树控件和列表控件:

    CTreeCtrl &pTreeCtrl = pTreeView->GetTreeCtrl();
    CListCtrl &pListCtrl = pListView->GetListCtrl();
    

    现在,您可以使用CTreeCtrlCListCtrl 公开的函数分别更改树和列表的内容,例如使用CTreeCtrl::InsertItemCListCtrl::InsertItem 添加新项目:

    pTreeCtrl.InsertItem( /* ... whatever ... */ );
    pListCtrl.InsertItem( /* ... whatever ... */ );
    

    【讨论】:

    • 非常感谢罗杰罗兰。
    【解决方案2】:

    使用CSplitterWnd::GetPane 检索指向每个窗格的指针,它们将是指向您的CXTreeViewCXListView 类的指针。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-28
      相关资源
      最近更新 更多