感谢看到这个问题的同仁,问题如下:
SDI切分为1行2列,两个窗口;请问如何给动态给其中一个窗口加载树形控件。试过直接Creat,不过不行,代码如下:m_TreeCtrl.Create( TVS_CHECKBOXES | TVS_EDITLABELS | TVS_FULLROWSELECT |
               TVS_HASBUTTONS | TVS_HASLINES | TVS_INFOTIP |TVS_SHOWSELALWAYS,rect,pCwnd,IDC_MYTREE);
bool CMainFrame::InitTree(void)
{
          ......
          ......
}

解决方案 »

  1.   

    tree在view的OnCreate里动态增加即可,或者直接用一个CTreeView
      

  2.   

    CRect rectDummy;
    rectDummy.SetRectEmpty(); // Create view
    const DWORD dwViewStyle = WS_CHILD | WS_VISIBLE | TVS_HASLINES |
      TVS_LINESATROOT | TVS_HASBUTTONS | WS_CLIPSIBLINGS |
      WS_CLIPCHILDREN; if (!m_wndTree.Create(dwViewStyle, rectDummy, this, 2))
    {
    TRACE0("创建视图失败\n");
    return -1; // fail to create
    }
      

  3.   

    控件的风格要可见和是子窗口. WS_CHILD | WS_VISIBLE ,或直接用CTREEVIEW或CFORMVIEW拖上去.
      

  4.   

    从CTreeView派生一个类,如CLeftView, 可以显示树形控件。
    在CMainFrame类里添加一个成员
    CSplitterWnd m_wndSplitter;实现CMainFrame::OnCreateClient()方法,部分代码:
        // TODO: 创建分割视图
    if (!m_wndSplitter.CreateStatic(this, 1, 2))
    {
    TRACE0("Failed to CreateStaticSplitter\n");
    return FALSE;
    }
    // add  - an input view in column 1
    if (!m_wndSplitter.CreateView(0, 0,
    RUNTIME_CLASS(CLeftView), CSize(170, 0), pContext))
    {
    TRACE0("Failed to create second pane\n");
    return FALSE;
    }
             // 使用同样的方法添加另一个视图
    // activate the input view
    SetActiveView((CView*)m_wndSplitter.GetPane(0,1));
      

  5.   

    直接通过创建工程时,创建一个资源管理器类型的窗口,会自动切分窗口,然后在CLeftView中动态创建树就行了
      

  6.   

    试试这个,在其中之一窗口以他为父窗口,Create出非模式对话框,此时就可以在上面为所欲为了^_^