我的CListCtrl中有3行3列数据,我想读出.
第一列的属性为CString.
第二列的属性为float.
第三列的属性为char*.
我想分别读出,下面是我试着读的第一列:
int m_iItemCount = m_cSNotionList.GetItemCount();//=3
if(m_iItemCount)
{
      for(int m_iListNum = 0; m_iListNum < m_iItemCount; m_iListNum ++);
      {     
          CString str1;
 str1 = m_cSNotionList.GetItemText(m_iListNum, 0);
           MessageBox(str1);
      }
}
为什么BOX显示为空,且只弹出一个BOX.
高手指点.我对此控件的函数实在不熟.
请说详细些,先谢了.

解决方案 »

  1.   

    是MessageBox(str1)问题,可以debug跟一下,察看str1的值,m_cSNotionList.GetItemText(m_iListNum, 0) 没错,我也是这么用
      

  2.   

    这个控件中是否有对应数据?
    CString GetItemText( int nItem, int nSubItem ) 中nItem是行,nSubItem是列!
      

  3.   

    CString GetItemText( int nItem, int nSubItem ) const;ParametersnItemThe index of the item whose text is to be retrieved.nSubItemSpecifies the subitem whose text is to be retrieved.If nSubItem is zero, this function retrieves the item label; if nSubItem is nonzero, it retrieves the text of the subitem.
      

  4.   

    你debug跟了吗?str1有值吗?
      

  5.   

    如果nSubItem等于零,那么该函数将获取项标签,否则,它将获取子项的文本。
      

  6.   

    你自己测试一下啦
    我遇到过怪问题,多编译几次可能可以解决
    看看是不是数据类型转换不正确引起的
    (LPSTR)(LPCTSTR)str1
      

  7.   

    看看:
    CString str1;
    str1 = m_cSNotionList.GetItemText(0, 0);
    MessageBox(str1);
    我这样做没问题!
      

  8.   

    CString str1;
    str1 = m_cSNotionList.GetItemText(1, 0);
    MessageBox(str1);
    我这样做BOX显示的也是对的。
    但加了for(int m_iListNum = 0; m_iListNum < m_iItemCount; m_iListNum ++)就不行了。
    for(int m_iListNum = 0; m_iListNum < m_iItemCount; m_iListNum ++)
    {
       CString str1;
       str1 = m_cSNotionList.GetItemText(m_iListNum, 0);
       MessageBox(str1);
    }
    大家再帮我看看,我要疯了!
      

  9.   

    我发现你的代码有问题:
    for(int m_iListNum = 0; m_iListNum < m_iItemCount; m_iListNum ++);
          {     
              CString str1;
     str1 = m_cSNotionList.GetItemText(m_iListNum, 0);
               MessageBox(str1);
          }
    怎么for循环后面多了个分号,这样会出问题的,可以compile通过,你删除它试
      

  10.   

    不是这个原因!
    谢谢大家,再看看吧!
    我又试了,for循环出了问题,
    进入for循环时m_iListNum=3,
    所以只有一个空的BOX弹出.
    大家帮我解决这个for的问题!!!!!
      

  11.   

    我猜测就是那个原因的,for循环后跟了分号,相当于走了空,for循环退出时m_iListNum恰好等于3,我想没错的!!!!
      

  12.   

    上面的问题已解决了.
    for的问题已解决,是我的问题,感谢 chincomstar(VC新手) 提醒;
    我的第2列怎么读呢!
    数据类型是float的,
    但GetItemTexti,1)返回的是CString;
    我需要读出来
    再帮我吧,我看了半天的MFC类库,还是不知用那个函数!
      

  13.   

    其实listctrl 控件里放的是文本,你只能拿到CString 型,可以进行类型的转换