这是一个发生在基于对话框的MFC应用程序下的问题。
下面的方法是我自己写的,但是只有在输出四列的情况下才能正常显示,如果输出超过四列数据的话,就不但没有显示,而且会直接退出对话框程序
void CMemberDlg::AddToList()
{
m_List.DeleteAllItems();   //m_List是CListCtrl的一个对象
CADOConn adoconn;
adoconn.OnInitADOConn();  //初始化数据库连接 _bstr_t vSQL;
vSQL = "select * from base_Member"; int i = 0; m_pRecordset = adoconn.GetRecordSet(vSQL); while(!m_pRecordset->ADOEof)
{
m_List.InsertItem(i,"",0);
m_List.SetItemText(i,0,(LPCTSTR)(_bstr_t)m_pRecordset->GetCollect("mb_num"));
m_List.SetItemText(i,1,(LPCTSTR)(_bstr_t)m_pRecordset->GetCollect("mb_name"));
m_List.SetItemText(i,2,(LPCTSTR)(_bstr_t)m_pRecordset->GetCollect("mb_pw"));
m_List.SetItemText(i,3,(LPCTSTR)(_bstr_t)m_pRecordset->GetCollect("mb_sex"));
// m_List.SetItemText(i,4,(LPCTSTR)(_bstr_t)m_pRecordset->GetCollect("mb_idcard"));
// m_List.SetItemText(i,5,(LPCTSTR)(_bstr_t)m_pRecordset->GetCollect("mb_score"));
// m_List.SetItemText(i,6,(LPCTSTR)(_bstr_t)m_pRecordset->GetCollect("mb_money"));
// m_List.SetItemText(i,7,(LPCTSTR)(_bstr_t)m_pRecordset->GetCollect("mb_statu"));
// m_List.SetItemText(i,8,(LPCTSTR)(_bstr_t)m_pRecordset->GetCollect("mb_money"));
// m_List.SetItemText(i,9,(LPCTSTR)(_bstr_t)m_pRecordset->GetCollect("mb_group"));
m_pRecordset->MoveNext();
} adoconn.ExitConnect();
}

解决方案 »

  1.   

    你的列表中一共设置了有几列m_List.InsertColumn(,,,)?
    如果只有3列的话就只能显示3列的数据了,对于为什么退出我也不知道
      

  2.   

    很明显是你没设置正确的列数
    m_List.InsertColumn(1,"第二列"); 
    .............
      

  3.   

    那就很有可能是 m_pRecordset->GetCollect("mb_idcard"))的问题了 自己检查下
      

  4.   

    你可以把你的和这个listctrl相关的代码粘贴一下,这样大家的分析也更有针对性
      

  5.   

    1;CHeaderCtrl* GetHeaderCtrl( );2;CHeaderCtrl::GetItemCount();
    看看有多少列?