知道CPropertySheet和CPropertyPage的做法。感觉不是一回事。
请大侠指点一下!先谢过!

解决方案 »

  1.   

    CTabCtrl + dialog 就可以。
      

  2.   

    MessageBox(_T("你发的图确实看不到!"), _T("温馨提示"), MB_ICONINFORMATION);
      

  3.   

    图在这里——http://hi.csdn.net/space-9191110-do-album-picid-818194.html
      

  4.   

    CTabCtrl + CDialog就可以了
      

  5.   

    正在看http://blogold.chinaunix.net/u3/101359/showart_2000485.html及附件程序。
    云里雾里。
      

  6.   

    CTabCtrl + CDialog
    http://www.vckbase.com/document/viewdoc/?id=398
      

  7.   

    CTabCtrl+Dialog用起来灵活,但感觉貌似不和章法(同CPropertySheet比);
    CPropertySheet易用,但有时不太灵活(同CTabCtrl比);
    以上是我瞎总结的,事实上我没弄过。
    但还是建议楼主有精力的话最好封装自己的CTabCtrl,注意汲取CPropertySheet的优点,是王道也.
    其实网上也有例子啦~
      

  8.   

    正在仿这个例子——
    主对话框内放一Tab控件。为该控件建一CTabCtrl类型关联变量,该变量是主对话框类的一个成员。
    再为该控件从CTabCtrl派生一个类CMyTab。
    主对话框的OnInitDialog()里添加:
             m_tab.InsertItem(0,"标签1");
    m_tab.InsertItem(1,"标签2"); CTab1* m_pE = new CTab1();
    //m_tab.m_pE = m_pE;
    m_pE->Create(IDD_DIALOG1,&m_tab);

    CTab2*  m_pM = new CTab2();
    //m_tab.m_pM = m_pM;
    m_pM->Create(IDD_DIALOG2,&m_tab); CRect rect;
    m_tab.GetClientRect(rect);
    rect.InflateRect(-1,-30,-2,-2);
    m_pE->MoveWindow(rect);
    m_pE->ShowWindow(SW_SHOW);在MyTab类中添加对TCN_SELCHANGE消息的响应函数:
    void CMyTab::OnSelchange(NMHDR* pNMHDR, LRESULT* pResult) 
    {
    // TODO: Add your control notification handler code here
    CRect rect;
    GetClientRect(&rect);
    rect.DeflateRect(1,30,2,2);
            int cursel = this->GetCurSel();

             switch(cursel)
    {
    case 0:
    {MessageBox("1 selected!");
    //m_pM->ShowWindow(SW_HIDE);
    //m_pE->MoveWindow(rect);
    //m_pE->ShowWindow(SW_SHOW);
    break;
       }
       
    case 1:
    {MessageBox("2 selected!");
    //m_pE->ShowWindow(SW_HIDE);
    //m_pM->MoveWindow(rect);
    //m_pM->ShowWindow(SW_SHOW);
    break;
       }
       
    }
    *pResult = 0;
    }
    编译没问题,但就是不弹出消息框。
    大侠指点一下啊?在线等。谢啦!!!
      

  9.   

    CTab1和CTab2分别是2个标签页对应的对话框,两个对话框的ID分别为IDD_DIALOG1和IDD_DIALOG2。
      

  10.   

    原例中有这两句
    m_tab.m_pE = m_pE;
    m_tab.m_pM = m_pM;
    但我觉得CTabCtrl类无m_pE或m_pM成员。
    原例若删掉这两句,就报错。
    我的程序若有这两句,编译就说CTabCtrl类无m_pE或m_pM成员。删掉编译正常,可是对TCN_SELCHANGE消息无反应。  
      

  11.   

    有兴趣的话可以看看这个
    http://blog.csdn.net/xianglitian/archive/2010/05/23/5618814.aspx
      

  12.   

    人家的例子应该是重载了CTabCtrl类,在里面定义了两个指针m_pE和m_pM
      

  13.   

    King_hhuang:
    能详细说说吗?
      

  14.   

    你不有别人的代码吗,你照着看啊他如果
    m_tab.m_pE = m_pE;
    m_tab.m_pM = m_pM;
    访问没问题,肯定在m_tab所在的类里面定义了那两个指针啊
    你去看你的例子中的那个代码啊
      

  15.   

    King_hhuang:
    在例子的整个工程搜了一下m_pE,结果如下——
    D:\temp\Tab\MyTab.cpp(23): delete m_pE;
    D:\temp\Tab\MyTab.cpp(49): m_pE->MoveWindow(rect);
    D:\temp\Tab\MyTab.cpp(50): m_pE->ShowWindow(SW_SHOW);
    D:\temp\Tab\MyTab.cpp(54): m_pE->ShowWindow(SW_HIDE);
    D:\temp\Tab\MyTab.h(23): CEmployee* m_pE;
    D:\temp\Tab\TabDlg.cpp(123): CEmployee* m_pE = new CEmployee();
    D:\temp\Tab\TabDlg.cpp(124): m_tab.m_pE=m_pE;
    D:\temp\Tab\TabDlg.cpp(125): m_pE->Create(IDD_DIALOG1,&m_tab)
    D:\temp\Tab\TabDlg.cpp(134): m_pE->MoveWindow(rect);
    D:\temp\Tab\TabDlg.cpp(135): m_pE->ShowWindow(SW_SHOW);
    D:\temp\Tab\TabDlg.cpp(140): CEmployee* m_pE = new CEmployee();
    D:\temp\Tab\TabDlg.cpp(141): m_tab.m_pE = m_pE;
    D:\temp\Tab\TabDlg.cpp(142): m_pE->Create(IDD_DIALOG1,&m_tab);
    D:\temp\Tab\TabDlg.cpp(151): m_pE->MoveWindow(rect);
    D:\temp\Tab\TabDlg.cpp(152): m_pE->ShowWindow(SW_SHOW);
    TabDlg是主对话框,MyTab是Tab控件的关联类,m_tab是Tab控件的关联变量。
      

  16.   

    King_hhuang:
    能详细说说吗?
      

  17.   

    D:\temp\Tab\MyTab.h(23): CEmployee* m_pE;头文件不就定义拉m_pE吗,你叫我怎么说啊,你对着源代码看啊
    先看懂它的源代码,照着做一个
    那怕就是按照你编程的思想,每个步骤copy一遍也可以啊,重要的是你要搞清楚它是怎么做的
      

  18.   

    原例作为学习素材,是个好引子。
    这个例子更好——
    http://wenku.baidu.com/view/b75e44543c1ec5da50e27053.html
    无论如何,感谢大家的帮助!谢谢!