tab控件多行标签展示

tab控件多行标签显示
请问以下代码,为什么运行的时候会说2次断言不通过:Second Chance Assertion Failed: File winctrl2.cpp, Line 1163;
问题出在
void CTabCtrl::DrawItem(LPDRAWITEMSTRUCT)
{
ASSERT(FALSE); // must override for self draw tab controls
}


源码:
BOOL CDialogShowLog::OnInitDialog()
{
CDialog::OnInitDialog();

// TODO: 在此添加额外的初始化
int i = 0;
for(vector<CString>::iterator iter = m_vecstrFileName.begin(); iter != m_vecstrFileName.end(); iter++)
{
  CString strFileName;
 
  strFileName = *iter;
int index = 0;
index = strFileName.ReverseFind('\\');
strFileName.Delete(0,index + 1);
  m_tabCtrl.InsertItem(i,strFileName);//添加标签
i++;
}
  m_dialogFileInfo.Create(IDD_DIALOG_FILE,this);
  CRect tab_rect;
  m_tabCtrl.GetWindowRect(&tab_rect);
  ScreenToClient(&tab_rect);
  CRect tab_clientrect;
  m_tabCtrl.GetClientRect(&tab_clientrect);
  CRect rect = tab_rect + tab_clientrect;
  m_dialogFileInfo.MoveWindow(rect.left,rect.top +20,tab_clientrect.right - tab_clientrect.left,tab_clientrect.bottom - tab_clientrect.top - 20);
m_dialogFileInfo.GetDlgItem(IDC_EDIT_FILE)->MoveWindow(0,5,tab_clientrect.right - tab_clientrect.left,tab_clientrect.bottom - tab_clientrect.top - 25);
fstream sin(m_vecstrFileName[0]);
string str;
CString strFileInfo = "";
while(getline(sin, str))
{
m_vecstrFileInfo.push_back(str.c_str());
}
sin.close();
for (vector<CString>::iterator iter = m_vecstrFileInfo.begin();iter !=m_vecstrFileInfo.end();iter++)
{
strFileInfo += *iter + "\r\n";
}
m_dialogFileInfo.SetDlgItemText(IDC_EDIT_FILE,strFileInfo);
  m_dialogFileInfo.ShowWindow(SW_SHOW);
m_tabCtrl.SetCurSel(0); 
return TRUE; // return TRUE unless you set the focus to a control
// 异常: OCX 属性页应返回 FALSE
}
这里,我把tab控件设置为多行显示,请问为什么会出现这种情况,SvrMgr_d.exe 中的 0x7c92120e 处未处理的异常: 用户断点 。多谢大家!!!!!!

------解决方案--------------------
如果你的TAB控件使用了TCS_OWNERDRAWFIXED(自绘)样式,就必须实现DrawItem.这个断言错误就是提示你这个的.

多行显示应该加入TCS_MULTILINE样式.
不需要自绘的话,去掉TCS_OWNERDRAWFIXED







------解决方案--------------------
那就用setstyle或者modifyStyle来修改下风格。