我有一个树型控件(CTreeCtrl)上面有两层。
..第一章
....第一节当增加“第二章\n 第一节”的时候,便新建一个新的窗口,用来显示第二章第一节的内容。现在的问题是,当章节增多的时候,我怎么通过树型控件,来控制窗口呢?
比如双击树型控件某个Item,能跳到相应的窗口。

解决方案 »

  1.   

    你可以把新窗口的指针, 放在树元素的Data值里
    CxDialog * pDlg = new CxDialog;
    //................
    tree.SetItemData(hItem, (DWORD)pDlg);为了方便清除. 最好把这些pDlg放在链表里, 这样删的时候就可以保证删干净了.
      

  2.   

    接上当选中一个树元素时
    CxDialog pDlg = (CxDialog *)tree.GetItemData(hItem);
    if(pDlg != NULL && pDlg->IsKindOf(RUNTIME_CLASS(CxDialog)))
    {
    //处理
    }
    {
    //不处理
    }
      

  3.   

    还有就是:当关闭某个窗口时,在树上与之对应的项,也要删除。
    ======================================================
    你在对话框中用一个成员变量记录树元素的HTREEITEM. 关闭时就可以删除了.
    但同时, 你还要delete掉对话框对象. 有点麻烦.
      

  4.   

    我是将窗口切分后,左边是Tree,右边是基于FormView的,然后通过更改FormView的对话框实现的
      

  5.   

    重载WM_CLOSE消息
    void CMyDlg::OnClose()
    {
      CDialog::OnClose();
    }你直接从链表中删除就行了,使用链表就是为了方便管理那些对话框。