我建立了一个基于对话框的工程,左边添加了一个树控件,现在我想向右边添加若干属性表对话框,当单击树控件某一项目时,弹出不同的属性表对话框。也看了很多例子,一时之间还是弄不明白,所以想请高手指导指导。为了简单起见,就以一个对话框(包含一个树控件)、一个属性表对话框(包含一个编缉框)为例,当我单击树控件某一个项目时,在对话框上弹出我想要的属性表对话框。

解决方案 »

  1.   

    假设它们的ID分别为:IDD_DIALOG 、IDD_TREE、 IDD_PROPERTY、 IDD_EDIT
      

  2.   

    用Tab控件,搜“VC向导程序”
      

  3.   

    用CpropertySheet和CpropertyPage类.
    自己定义一个类,派生自CpropertySheet。再在CpropertySheet的构造函数中增加属性页,
    然后在IDD_DIALOG 中产生属性表,
    最后在TREE的响应函数中使用CpropertySheet::SetACtivePage()显示某一个属性页!
      

  4.   

    Tab控件就可以实现,右边添加一个窗口就在树控件中加一个结点,结点的itemdata保存窗口索引,选择不同的结点时激活对应的tab页即可
      

  5.   

    大侠,帮我看看下面的代码哪个地方错了。
    BOOL CCOptionsTreeDlg::OnInitDialog()
    {
        CImageList* pInfoImages = new CImageList;
        pInfoImages->Create(16, 16, ILC_COLOR8 | ILC_MASK, 2, 0);
        pInfoImages->Add(AfxGetApp()->LoadIcon(IDI_ICON1));
        pInfoImages->Add(AfxGetApp()->LoadIcon(IDI_ICON2));
        m_Tree.SetImageList(pInfoImages, TVSIL_NORMAL);
        HTREEITEM hTreeItem1;
        HTREEITEM hTreeItem2;
        hTreeItem1 = m_Tree.InsertItem("Root Item 1", 0, 1, TVI_ROOT, TVI_LAST);
        hTreeItem2 = m_Tree.InsertItem("Tree Item 1", 0, 1, hTreeItem1, TVI_LAST);
        m_Tree.SetItemData(hTreeItem2, (DWORD)&m_OptionsTree);
        hTreeItem1 = m_Tree.InsertItem("Root Item 2", 0, 1, TVI_ROOT, TVI_LAST);
        m_dlgPropSheet.AddPage(&m_OptionsTree);
    }
    void CCOptionsTreeDlg::OnSelchangingTree(NMHDR* pNMHDR, LRESULT* pResult) 
    {
    NM_TREEVIEW* pNMTreeView = (NM_TREEVIEW*)pNMHDR;
    // TODO: Add your control notification handler code here

        HTREEITEM hCurrent = m_Tree.GetSelectedItem();
        if(hCurrent)
          ((CPropertyPage*)m_Tree.GetItemData(hCurrent))->ShowWindow(SW_SHOW);
    *pResult = 0;
    }
    CPage m_OptionsTree;
    CNewPropertySheet m_dlgPropSheet;