先贴上我的代码BOOL CMaindlg::OnInitDialog()
{
CDialog::OnInitDialog(); // TODO:  Add extra initialization here m_setTab.InsertItem(0,_T("设置1"));
m_setTab.InsertItem(1,_T("设置2"));
m_setTab.InsertItem(2,_T("设置3"));
    
m_backCityDlg.Create(IDD_BACKCTIYDLG,GetDlgItem(IDC_SETTAB));
m_scriptDlg.Create(IDD_SCRIPTSETDLG,GetDlgItem(IDC_SETTAB)); 
m_skillDlg.Create(IDD_SKILLDLG,GetDlgItem(IDC_SETTAB));
// 将子窗口显示在m_Tab范围内 
CRect rs; 
m_setTab.GetClientRect(rs); 
rs.top+=20; 
rs.bottom-=4; 
rs.left+=4; 
rs.right-=4; 
m_scriptDlg.MoveWindow(rs); 
m_skillDlg.MoveWindow(rs);
m_backCityDlg.MoveWindow(rs);
// 默认显示第一个子窗口 
m_setTab.SetCurSel(0);
//m_backCityDlg.ShowWindow(TRUE); return TRUE;  // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void CMaindlg::OnTcnSelchangeSettab(NMHDR *pNMHDR, LRESULT *pResult)
{
// TODO: Add your control notification handler code here
int nCurSel = m_setTab.GetCurSel();  switch(nCurSel) 

case 0: // 显示子窗口1 
m_backCityDlg.ShowWindow(TRUE); 
m_scriptDlg.ShowWindow(FALSE);
m_skillDlg.ShowWindow(FALSE);
break; 
case 1: // 显示子窗口2 
m_scriptDlg.ShowWindow(TRUE); 
m_backCityDlg.ShowWindow(FALSE);
m_skillDlg.ShowWindow(FALSE);
break; 
case 2:  //显示窗口3
m_skillDlg.ShowWindow(TRUE);
m_backCityDlg.ShowWindow(FALSE);
m_scriptDlg.ShowWindow(FALSE);
break;

*pResult = 0;
}
分页窗体是通过点击按钮创建的void CWitchCraftProDlg::OnBnClickedSetingbtn()
{
// TODO: Add your control notification handler code here
m_cMainDlg = new CMaindlg();
m_cMainDlg->Create(CMaindlg::IDD,this);
m_cMainDlg->ShowWindow(SW_SHOW);
}
以前都是这么用的,但是不知道为什么突然不能分页了,窗体出来后就死了,无法移动无法实现分页

解决方案 »

  1.   

    不知道怎么回事突然又好了。
    分页是能分页了,但是不是显示在cmainDlg窗体上面,脱离窗体了。。郁闷。
    总是出现稀奇古怪的毛病
      

  2.   

    我重新创建了一个工程,直接在主窗体放的分页控件,按着我的代码写是没有问题的。
    但是如果是在new出来的窗体上放着分页控件就不行了
      

  3.   


    不行的,说了如果主窗体上的tabctrl控件是可以的,如果tabctrl控件在一个new出来的窗体上位置就不对了。
      

  4.   

    那你为什么还要new主窗体呢,主窗体不是已经创建了,你直接显示就可以了。
      

  5.   

    子窗口  style:child
           border: none
      

  6.   

    应该改成:
    BOOL CMaindlg::OnInitDialog()
    {
        CDialog::OnInitDialog();    // TODO:  Add extra initialization here    m_setTab.InsertItem(0,_T("设置1"));
        m_setTab.InsertItem(1,_T("设置2"));
        m_setTab.InsertItem(2,_T("设置3"));
        
        m_backCityDlg.Create(IDD_BACKCTIYDLG,this);
        m_scriptDlg.Create(IDD_SCRIPTSETDLG,this); 
        m_skillDlg.Create(IDD_SKILLDLG,this);
        // 将子窗口显示在m_Tab范围内 
        CRect rs; 
        m_setTab.GetClientRect(rs); 
        rs.top+=20; 
        rs.bottom-=4; 
        rs.left+=4; 
        rs.right-=4; 
        m_scriptDlg.MoveWindow(rs); 
        m_skillDlg.MoveWindow(rs);
        m_backCityDlg.MoveWindow(rs);
        m_scriptDlg.ShowWindow(SW_SHOW); 
        m_skillDlg.ShowWindow(SW_HIDE);
        m_backCityDlg.ShowWindow(SW_HIDE);
        return TRUE;  // return TRUE unless you set the focus to a control
        // EXCEPTION: OCX Property Pages should return FALSE
    }