我在对话框工程中,建立了一个CReBar,CReBar中添加了两个Bar,一个是普通的CToolBar,一个是CDialogBar,在CDialogBar中添加了控件TabCtrl。使用如下代码给TabCtrl加入item:在OnInitDialog()函数中////////////////////////////////////////////////////////////
m_pTabCtrl = (CTabCtrl*)m_wndDlgBar.GetDlgItem(IDC_PARAMTAB);
m_pTabCtrl->InsertItem(0, "参数组1");
////////////////////////////////////////////////////////////在OnParamGroupNew()函数中////////////////////////////////////////////////////////////
int nItemCount = m_pTabCtrl->GetItemCount(); // 在添加参数组10时就开始错!char szItem[8];
sprintf(szItem, "参数组%d", nItemCount+1);m_pTabCtrl->InsertItem(nItemCount, szItem);
m_pTabCtrl->SetCurSel(nItemCount);
TRACE("ItemCount: %d\n", nItemCount);////////////////////////////////////////////////////////////代码运行后,TabCtrl应该是这样:
参数组1 参数组2 参数组3 ... 参数组9 参数组10 参数组11 ...可实际运行结果是这样:
参数组12 参数组11 参数组10 参数组1 参数组2 ... 参数组9跟踪程序,发现在插入“参数组10”时及以后的参数组时,GetItemCount函数返回都是0。为什么会这样?CTabCtrl用的是默认风格。

解决方案 »

  1.   

    既然m_pTabCtrl->GetItemCount(); 有问题,那就换一个计数器好了.
    自己定义一个int成员变量来记录Item的个数.
      

  2.   

    我是通过(CTabCtrl*)m_wndDlgBar.GetDlgItem(IDC_PARAMTAB);来得到控件的。如果要自己写一个类的话,该如何定义这个控件的类呢?这个控件不属于主窗口,属于其他窗口,CDialogBar m_wndDlgBar是通过Create函数来指定这个窗口ID的。MFC怎么会犯这么大的错误,是不是我哪里搞错了?