我在程序中使用了CListView类,显示方式为LVS_REPORT
    表头的两列显示正常。然而条目却只显示了第一列,第二列数据显示不出来,为什么?该如何设置才能使两列均能显示呢?
  谢谢!

解决方案 »

  1.   


    lvitem.mask=LVIF_TEXT|LVIF_IMAGE|LVIF_PARAM;
    for ( i = 0; i < 10; ++i)
    {
             CString str;
             str.Format("Time %d", i);
    lvitem.iItem=i;
    lvitem.iSubItem=0;
    lvitem.pszText=str.GetBuffer(7);
    lvitem.lParam=i;
    iPos = ListCtrl.InsertItem(&lvitem);         str.Format("Text %d", i);
    lvitem.iItem=iPos;
    lvitem.iSubItem=1;
    lvitem.pszText=str.GetBuffer(7);
    ListCtrl.SetItem(&lvitem);
    }
      

  2.   

    我的方法:
    CString str;
    str.Format("%d",i);
    nItem=refCtrl.InsertItem(0xffff,str,0);// 最后一个参数为所选图片
    refCtrl.SetItem(nItem,1,1,"LLM",NULL,0,0,0);
    refCtrl.SetItem(nItem,2,1,"LLM",NULL,0,0,0);
    refCtrl.UpdateWindow();
      

  3.   

    是不是我的方法有问题呀?但是我在独立使用CListCtrl控件的时候用的是同样的方法,显示正常!是不是在设置dwStyle的时候有什么要注意的呀?
      

  4.   

    这样就可以了:LV_ITEM lvitem;
    lvitem.mask=LVIF_TEXT|LVIF_IMAGE|LVIF_PARAM;
    for (int  i = 0; i < 10; ++i) {
      CString str;
      str.Format("Time %d", i);
      lvitem.iItem=i;
      lvitem.iSubItem=0;
      lvitem.pszText=str.GetBuffer(7);
      lvitem.lParam=i;
      int iPos = m_ListCtrl.InsertItem(&lvitem);
      str.ReleaseBuffer();  str.Format("Text %d", i);
      m_ListCtrl.SetItemText(iPos,1,str);
    }
      

  5.   

    问题已经解决了!我感觉好的解决的关键是用了SetItemText()函数。但我的设置第二列的方法也没有什么错误,但为什么就是显示不出第二列呢?