CListCtrl中,插入的第10列时这样:InsertColumn(9, "OOO");
             第11列这么写时 InsertColumn(10, "OOOX"); 这一列无法显示,并且程序出现Debug Error,只能中止。             为什么会这样,应该如何插入第11列及之后的列数?

解决方案 »

  1.   

    应该不是InsertColumn()函数造成的。
    发下完整代码。
      

  2.   

    m_list.DeleteAllItems();
    CDialog::OnInitDialog(); //初始化里CList 控件的和header
        m_list.InsertColumn(0,"姓名");
    m_list.InsertColumn(1,"班级");
        m_list.InsertColumn(2,"支部");
        m_list.InsertColumn(3,"入学时间");
    m_list.InsertColumn(4,"发展时间");
    m_list.InsertColumn(5,"是否转正");
    m_list.InsertColumn(6,"获奖情况");
        m_list.InsertColumn(7,"联系方式");
    m_list.InsertColumn(8,"职务");
        m_list.InsertColumn(9,"性别");
        m_list.InsertColumn(10,"民族");
    m_list.InsertColumn(11,"出生日期"); //设置header的宽度
        RECT rectList;
    m_list.GetWindowRect(&rectList);
    int wid=rectList.right-rectList.left-11;
    for(int i=0;i<12;i++)
    {
    m_list.SetColumnWidth(i,wid/12);
    m_list.SetExtendedStyle(LVS_EX_FULLROWSELECT);
    } //定义数据库对象
    ADOConn m_ADOConn;
    m_ADOConn.OnInitADOConn();//连接数据库 CString sql;
    sql.Format("select * from Info");
    _RecordsetPtr m_pRecordset;//定义记录集对象 //打开记录集
        m_pRecordset = m_ADOConn.GetRecordSet((_bstr_t)sql);    //遍历记录集
        while(m_ADOConn.m_pRecordset->adoEOF == 0)
    {
    //将获取的记录显示到列表框内
            m_list.InsertItem(0,"");
            m_list.SetItemText(0,0,(char *)(_bstr_t)m_pRecordset->GetCollect("姓名"));
            m_list.SetItemText(0,1,(char *)(_bstr_t)m_pRecordset->GetCollect("班级"));
            m_list.SetItemText(0,2,(char *)(_bstr_t)m_pRecordset->GetCollect("支部"));
            m_list.SetItemText(0,3,(char *)(_bstr_t)m_pRecordset->GetCollect("入学时间"));
            m_list.SetItemText(0,4,(char *)(_bstr_t)m_pRecordset->GetCollect("发展时间"));
            m_list.SetItemText(0,5,(char *)(_bstr_t)m_pRecordset->GetCollect("是否转正"));
    m_list.SetItemText(0,6,(char *)(_bstr_t)m_pRecordset->GetCollect("获奖情况"));
            m_list.SetItemText(0,7,(char *)(_bstr_t)m_pRecordset->GetCollect("联系方式"));
            m_list.SetItemText(0,8,(char *)(_bstr_t)m_pRecordset->GetCollect("职务"));
            m_list.SetItemText(0,9,(char *)(_bstr_t)m_pRecordset->GetCollect("性别"));
            m_list.SetItemText(0,10,(char *)(_bstr_t)m_pRecordset->GetCollect("民族"));
            m_list.SetItemText(0,11,(char *)(_bstr_t)m_pRecordset->GetCollect("出生日期"));

    m_pRecordset->MoveNext();
    }
        //断开数据库连接
        m_ADOConn.ExitConnect();
      

  3.   

       m_list.InsertColumn(11,"出生日期"); 这设个断点
     ADOConn m_ADOConn;这也设个断点
    调试下。
      

  4.   

    我试试,。
    可是当我注释掉
        m_list.InsertColumn(10,"民族");
        m_list.InsertColumn(11,"出生日期");和
            m_list.SetItemText(0,10,(char *)(_bstr_t)m_pRecordset->GetCollect("民族"));
            m_list.SetItemText(0,11,(char *)(_bstr_t)m_pRecordset->GetCollect("出生日期"));
    信息就能正常显示
      

  5.   

    InsertColumn()
    InsertColumn()即使执行失败也不会有这样的错误.
    应该是数据库访问这部分出错了。试下加异常处理。 try
    {
    ADOConn m_ADOConn;
    m_ADOConn.OnInitADOConn();//连接数据库 CString sql;
    sql.Format("select * from Info");
    _RecordsetPtr m_pRecordset;//定义记录集对象 //打开记录集
    m_pRecordset = m_ADOConn.GetRecordSet((_bstr_t)sql); //遍历记录集
    while(m_ADOConn.m_pRecordset->adoEOF == 0)
    {
    //将获取的记录显示到列表框内
    m_list.InsertItem(0,"");
    m_list.SetItemText(0,0,(char *)(_bstr_t)m_pRecordset->GetCollect("姓名"));
    m_list.SetItemText(0,1,(char *)(_bstr_t)m_pRecordset->GetCollect("班级"));
    m_list.SetItemText(0,2,(char *)(_bstr_t)m_pRecordset->GetCollect("支部"));
    m_list.SetItemText(0,3,(char *)(_bstr_t)m_pRecordset->GetCollect("入学时间"));
    m_list.SetItemText(0,4,(char *)(_bstr_t)m_pRecordset->GetCollect("发展时间"));
    m_list.SetItemText(0,5,(char *)(_bstr_t)m_pRecordset->GetCollect("是否转正"));
    m_list.SetItemText(0,6,(char *)(_bstr_t)m_pRecordset->GetCollect("获奖情况"));
    m_list.SetItemText(0,7,(char *)(_bstr_t)m_pRecordset->GetCollect("联系方式"));
    m_list.SetItemText(0,8,(char *)(_bstr_t)m_pRecordset->GetCollect("职务"));
    m_list.SetItemText(0,9,(char *)(_bstr_t)m_pRecordset->GetCollect("性别"));
    m_list.SetItemText(0,10,(char *)(_bstr_t)m_pRecordset->GetCollect("民族"));
    m_list.SetItemText(0,11,(char *)(_bstr_t)m_pRecordset->GetCollect("出生日期")); m_pRecordset->MoveNext();
    }
    //断开数据库连接
    m_ADOConn.ExitConnect();
    }catch(_com_error& e)
    {
    MessageBox(e.Description(), e.ErrorMessage());
    }