我用tab control控件 在
void CSpismgDlg::OnSelchangingTab1(NMHDR* pNMHDR, LRESULT* pResult) 
{
// TODO: Add your control notification handler code here
//选择页变动时切换页面    pDialog[m_CurSelTab]->ShowWindow(SW_HIDE);    m_CurSelTab = m_tab.GetCurSel();
CString aaa;
aaa.Format("%d",m_CurSelTab);
    MessageBox(aaa);
     
    pDialog[m_CurSelTab]->ShowWindow(SW_SHOW); *pResult = 0;
}为何GetCurSel();返回的值,和我点选的页对不上,我有三个页 m_tab.InsertItem(0, _T("first"));
    m_tab.InsertItem(1, _T("second"));
    m_tab.InsertItem(2, _T("third"));    m_mm3.Create(IDD_DIALOG3,&m_tab);
m_mm1.Create(IDD_DIALOG1,&m_tab);
    m_mm2.Create(IDD_DIALOG2,&m_tab);
         //设定在Tab内显示的范围
    CRect rc;
    m_tab.GetClientRect(rc);
    rc.top += 20;
    rc.bottom -= 8;
    rc.left += 8;
    rc.right -= 8;    m_mm3.MoveWindow(&rc);
    m_mm1.MoveWindow(&rc);
    m_mm2.MoveWindow(&rc);
        //把对话框对象指针保存起来
    pDialog[0] = &m_mm3;    pDialog[1] = &m_mm1;    pDialog[2] = &m_mm2;    //显示初始页面
    pDialog[0]->ShowWindow(SW_SHOW);    pDialog[1]->ShowWindow(SW_HIDE); pDialog[2]->ShowWindow(SW_HIDE);
    
        //保存当前选择的页面序号
m_CurSelTab=0;

解决方案 »

  1.   

    pDialog[m_CurSelTab]->ShowWindow(SW_HIDE); 
    m_CurSelTab = m_tab.GetCurSel(); 为什么先隐藏了再去取,交换一下位置试试
      

  2.   

    你的意思是不是要tab的1,2,3对应的Dialog应该是1,2,3?
    但是你的代码的tab的1,2,3对应的Dialog应该是3,1,2如果这样应该没错的,
      

  3.   

    changing是要改变但还没改变的时候,changed才是改变之后。
      

  4.   

    要在ON_CHANGE事件中GetCurSel(). 你却是在ON_CHANGING事件中使用.