问题描述:
一个主对话框,里面一个tab控件,还有两个对话框(设置成没有标题栏)。主要想实现运行的时候,显示主对话框时,另外两个对话框作为tab里面显示!但是单拖动主对话框的时候出现问题了,如图片:请问一下如何把这三个对话框整合在一起,就是说拖动主对话框的时候,另外两个对话框也一起跟着主对话框一起移动!谢谢!

解决方案 »

  1.   

    做为子对话框肯定跟着主对话框动的
    你在每个子对话框的属性里设置它的Style为Child即可
    在每个tab页显示时将属于他的子对话框MoveWindow协调下他的位置就OK了
      

  2.   

    谢谢hurryboylqs一直热心帮助!还想问一个问题,就是我的MFC程序里有一个tree控件,通常情况下对话框显示的时候它是合起来的,怎样把它一开始就是展开的呢?
      

  3.   

    使用tree控件的Expand函数展开...
      

  4.   


    void ExpandTree(HTREEITEM hItem) 

      Expand(hItem, TVE_EXPAND); 
      HTREEITEM hChild = GetChildItem(); 
      while (hChild) 
      { 
        ExpandTree(hChild); 
        hChild = GetNextItem(hChild); 
      } 
    }
    此外如果想遍历树可以使用下面的函数: 
    HTREEITEM GetRootItem( );得到根结点。 
    HTREEITEM GetChildItem( HTREEITEM hItem );得到子结点。 
    HTREEITEM GetPrevSiblingItem/GetNextSiblingItem( HTREEITEM hItem );得到指明结点的上/下一个兄弟结点。 
    每一个节点都Expand 
      

  5.   

    我想你想实现的是将两个子对话框显示在不同的标签页下:可以如下方法实现:在主对话框的头文件中定义一个tableCtrl控件的变量:
      CTableCtrl m_nTableCtrl;
      //若你有两个标签页
      若你为子对话框创建了一个类的话假设为CSubTest1Dlg 
     创建子对话框对象CSubTest1Dlg  m_nSubTest1Dlg;
      m_nSubTest1Dlg.Create(子对话框的ID,&m_nTableCtrl);
      另一个对话框也同上:
     也可以用m_nSubTest1Dlg.SubclassDlgItem(子对话框的ID,,&m_nTableCtrl);
     
      

  6.   

    CPropertyPage也可以实现你的功能哦。
      

  7.   

    CTabCtrl m_tab;//初始化m_tab控件 页数和子项标题
    m_tab.InsertItem(0,"title1"); 
    m_tab.InsertItem(1,"title2"); //建立属性页各页 
    CDialog1 page1;
    CDialog2 page2;
    page1.Create(IDD_DIALOG1,GetDlgItem(IDC_TAB1)); 
    page2.Create(IDD_DIALOG2,GetDlgItem(IDC_TAB1)); //设置页面的位置在m_tab控件范围内 
    CRect rs; 
    m_tab.GetClientRect(rs); 
    rs.top+=20; 
    rs.bottom-=4; 
    rs.left+=4; 
    rs.right-=4; page1.MoveWindow(rs); 
    page2.MoveWindow(rs); page1.ShowWindow(TRUE); 
    page2.ShowWindow(FALSE);
    默认显示第一个页面
    m_tab.SetCurSel(0);