CListCtrl& list = this->GetListCtrl();  Item1 mItem;
 mItem.mlist = &list;
 mItem.Isub = pNMListView->iSubItem;
 
 TRACE("%d", list.GetItemCount());
 for(int i=0; i<list.GetItemCount(); i++)//list.GetItemCount()有值
 {  
  list.SetItemData(i,i);//这边出错
 }
单步按重试,跳到
BOOL CListCtrl::SetItem(int nItem, int nSubItem, UINT nMask, LPCTSTR lpszItem,
int nImage, UINT nState, UINT nStateMask, LPARAM lParam)
{
ASSERT(::IsWindow(m_hWnd));
ASSERT((GetStyle() & LVS_OWNERDATA)==0);
LVITEM lvi;
lvi.mask = nMask;
lvi.iItem = nItem;
lvi.iSubItem = nSubItem;
lvi.stateMask = nStateMask;
lvi.state = nState;
lvi.pszText = (LPTSTR) lpszItem;
lvi.iImage = nImage;
lvi.lParam = lParam;
return (BOOL) ::SendMessage(m_hWnd, LVM_SETITEM, 0, (LPARAM)&lvi);
}LVS_OWNERDATA不为0

解决方案 »

  1.   

    我的listctrl是在拆分窗口上的一个视图上创建的
      

  2.   

    list.modifystyle( LVS_OWNERDATA, 0);
      

  3.   

    你Insert的时候,是否有“LVIF_PARAM ”标志?
      

  4.   

    四楼说的,好想我这个是虚拟listctrl,
    BOOL CItemView::PreCreateWindow(CREATESTRUCT& cs) 
    {
    // Perform default processing.  Return FALSE if failure:
    if (!CListView::PreCreateWindow (cs))
    return (FALSE); // Modify window sytle:
    // First clear icon view, small icon view, and list view bits.
    // Then set report view and owner data bits.  
    // (Owner data transfers the responsibility of managing data from the 
    // list control to the application programmer.  This allows very large
    // data sets to be handled efficiently.  See MSDN discussion of Virtual
    // List-View Style.)
    cs.style &= ~(LVS_ICON | LVS_SMALLICON | LVS_LIST);
    cs.style |= (LVS_REPORT | LVS_OWNERDATA); // Return TRUE to indicate success:
    return (TRUE);
    }那象这种虚拟的,怎么实现按一下listctrl头,实现内容排序?
      

  5.   

    Note Dynamically switching to and from the LVS_OWNERDATA style is not supported.
      

  6.   

    既然是虚表形式,数据是自己来管理的,响应LVN_GETDISPINFO通知来填写有关信息。
      

  7.   

    看这个例子CListCtrl and sorting rows
    http://www.codeproject.com/KB/list/clistctrl_sort.aspx
      

  8.   

    应该是这个LVS_OWNERDATA 风格没有设置吧!
      

  9.   

    如果要用SetItemData就要把LVS_OWNERDATA去掉,如果要用虚表的形式,则需要LVS_OWNERDATA
      

  10.   

    试试使用回调:LPSTR_TEXTCALLBACK 和 I_IMAGECALLBACK。