我在CTabCtrl的一个属性页中,又加入了一个CTabCtrl,可是不能显示,怎么解决呢? 

解决方案 »

  1.   

    DDX_Control(pDX, IDC_TAB, m_tabPage);
    m_tabPage.AddPage("采集数据", &m_pageDataCollect, IDD_DATA_COLLECT_DIALOG);
    m_tabPage.Show();.........在m_pageDataCollect中DDX_Control(pDX, IDC_TAB_SET, m_tabSet);
    m_tabSet.AddPage("串口设置", &m_pageSerialSet, IDD_SERIAL_DIALOG);
    m_tabSet.Show();
      

  2.   

    能显示, 我的一个程序中就是这样写的..(我用的是CMFCTabCtrl)另外 m_Tab.ShowWindow(SW_SHOW)
      

  3.   

    新加入的CTabCtrl作为原CTabCtrl的子窗口控件
      

  4.   

    你试试这种创建TAB属性页的办法
    // m_MyTab 为tab控件变量
    // m_Page1,m_Page2 为对话框类,就是你的属性页
    {
    CRect m_Rect;
    GetWindowRect(&m_Rect);
    ScreenToClient(&m_Rect);
    TCITEM m_item;
    //为Tab添加第一页
    m_item.mask = TCIF_TEXT;
    m_item.pszText = "第一页";
    m_MyTab.InsertItem(0,&m_item);
    m_Page1.Create(IDD_DIALOG1,&m_MyTab);
    m_Page1.SetWindowPos(NULL,10,30,m_Rect.right - 15,m_Rect.bottom - 40,SWP_SHOWWINDOW);//为Tab添加第二页
    m_item.pszText = "第二页";
    m_MyTab.InsertItem(1,&m_item);
    m_Page2.Create(IDD_DIALOG2,&m_MyTab);
    m_Page2.SetWindowPos(NULL,10,30,m_Rect.right - 15,m_Rect.bottom - 40,SWP_HIDEWINDOW);
    }// 然后添加tabCTRL控件的TCN_SELCHANGE事件
    void CMyDlg::OnTcnSelchangeTab1(NMHDR *pNMHDR, LRESULT *pResult)
    {
    // TODO: 在此添加控件通知处理程序代码
    //获得客户区
    CRect m_Rect;
    m_MyTab.GetClientRect(&m_Rect);switch(m_MyTab.GetCurSel())
    {
    case 0:
    m_Page1.SetWindowPos(NULL,10,30,m_Rect.right - 15,m_Rect.bottom - 40,SWP_SHOWWINDOW);
    m_Page2.SetWindowPos(NULL,10,30,m_Rect.right - 15,m_Rect.bottom - 40,SWP_HIDEWINDOW);
    break;
    case 1:
    m_Page1.SetWindowPos(NULL,10,30,m_Rect.right - 15,m_Rect.bottom - 40,SWP_HIDEWINDOW);
    m_Page2.SetWindowPos(NULL,10,30,m_Rect.right - 15,m_Rect.bottom - 40,SWP_SHOWWINDOW);
    break;
      }
    *pResult = 0;
    }
    以此类推.你在添加其他的tab的时候也按照这样的办法试试看.
    这样就行了. 
      

  5.   

    CTabCtrl 本来就不是容器 何谈属性页能加什么东西呢 
    平时用的时候 不就是把要放在TAB属性页的控件放到一个DIALOG里 然后手动去控制显示隐藏的嘛
    网上有对这操作封装好了的类 楼主不妨去找来一试