我想做一个基于对话框的程序,左边部分是一个Tree-View控件,包含一些项。当我点击其中某项时,右边部分就会显示相应的界面(每个项对应的界面都不一样)出来,其中包括按钮、编辑框、单选/复选按钮等等控件。请问该怎么实现?谢谢!

解决方案 »

  1.   

    先建立一个主对话框,坐标放TreeView控件,然后把右边建立好几个子对话框并隐藏,当左边选中相应的节点的时候,对应的子对话框ShowWindow(SW_SHOW)即可。
    每一个子对话框,你可以布局不同的控件在上面。
      

  2.   

    http://www.xiaozhou.net/ReadNews.asp?NewsID=836这个例子就是你要的那种效果,只不过你把左边的List控件换成TreeView控件就可以了。
      

  3.   

    我有一个这样的例子,如果有兴趣话给我发邮件[email protected]
      

  4.   

    这个例子看看
    http://218.108.41.12/vchome/book/download/SuperWorld.rar
      

  5.   

    void CSkillsBoxDlg::OnDblclkTreeCata(NMHDR* pNMHDR, LRESULT* pResult) 
    {
    // TODO: Add your control notification handler code here

    HTREEITEM m_hItem;
    //int iID=0;

    _variant_t _vValue;
    CString strTitle;
    CString strContent;
    CString strDesc;
     


    //获知点击哪个节点
    m_hItem = m_TreeList.GetSelectedItem();

    //CString S1 = m_TreeList.GetItemText(m_hItem);//获得节点内容
    //int S2=m_TreeList.GetItemData(m_hItem); //获得节点ItemData

    if(m_TreeList.GetParentItem(m_hItem)!=NULL) //说明是子节点
    {
    iItemData=m_TreeList.GetItemData(m_hItem);

    //获得子节点内容显示到text中
    strSQL.Format("select * from article where id=%d",iItemData);
    pRs->Open(_bstr_t(strSQL),vtMissing,adOpenDynamic,adLockBatchOptimistic,adCmdText);

    if(!pRs->adoEOF)
    {
    _vValue=pRs->GetCollect("title");
    if(_vValue.vt!=VT_NULL)
    {
    _vValue.ChangeType(VT_BSTR);
    strTitle=_vValue.bstrVal;
    } _vValue=pRs->GetCollect("Content");
    if(_vValue.vt!=VT_NULL)
    {
    _vValue.ChangeType(VT_BSTR);
    strContent=_vValue.bstrVal;
    } _vValue=pRs->GetCollect("Description");
    if(_vValue.vt!=VT_NULL)
    {
    _vValue.ChangeType(VT_BSTR);
    strDesc=_vValue.bstrVal;
    } pRs->Close();
    }//end if //更新text
    m_Title=strTitle;
    m_Content=strContent;
    m_Desc=strDesc;

    UpdateData(FALSE); m_Add.EnableWindow(FALSE);
    m_Modify.EnableWindow(TRUE);
    m_Delete.EnableWindow(TRUE); }
    else
    {
    iItemData=m_TreeList.GetItemData(m_hItem); m_Add.EnableWindow(TRUE);
    m_Modify.EnableWindow(FALSE);
    m_Delete.EnableWindow(FALSE);
    }
    *pResult = 0; }