在程序中new了一个CListCtrl控件,用create创建窗体,添加item时,用Debug编译出错,用Release编译不显示添加的内容 主要代码如下:(在CView的WM_LButtonDow中) 
    CListCtrl* plist=new CListCtrl(); 
    CRect rect(0,0,500,200); 
    plist->Create(LVS_OWNERDRAWFIXED | WS_BORDER | LVS_REPORT | LVS_ALIGNLEFT,rect,this,IDC_LIST1); 
     
    plist->InsertColumn(0,"column 1",LVCFMT_LEFT,150,0); 
    plist->InsertColumn(1,"column 2",LVCFMT_LEFT,150,1);         CString temp; 
    LV_ITEM lvi,lvi2; 
    lvi.mask=LVIF_TEXT; 
    lvi.iItem=0; 
    lvi.iSubItem=0; 
    lvi.pszText="item 1"; 
    int inx=plist->InsertItem(&lvi); 
    plist->SetItemText(0,1,"aaaa");     plist->ShowWindow(SW_SHOW);

解决方案 »

  1.   

    我手上没有MFC了,没法试
    你没有Insert subitem[1]就去setitemtext了
    还有,好像InsertItem有重载
    也许我和WTL搞混了.........
      

  2.   

    用pList->InsertItem(0,"item 1");增加第一列数据,不要用你的方法。
      

  3.   


    我添加了一个类 成员变量 CListCtrl m_list;在处理函数中,添加以下代码:
    if(m_list)
       m_list.DestroyWindow();CRect rect;
    GetClientRect(&rect);
    m_list.Create(LVS_REPORT,rect,this,ID_LIST);//ID_LIST为该listctrl的ID号CString str;
    int i;
    //设置列名
    for(i=0;i<3;i++)
    {
    str.Format("ITEM%d",i);
    m_list.InsertColumn(i,str,LVCFMT_LEFT,150);
    }//设置item and subitem
    LVITEM lv;
    for(i=0;i<5;i++)
    {
        lv.mask = LVIF_TEXT;
        lv.iItem = i;
        lv.iSubItem = 0;
        str.Format("item%d",i);
        lv.pszText = (LPTSTR)(LPCTSTR)str;
        m_list.InsertItem(&lv);    lv.iSubItem = 1;
        str.Format("subitem%d",i);
        lv.pszText = (LPTSTR)(LPCTSTR)str;
        m_list.SetItem(&lv);    lv.iSubItem = 2;
        str.Format("subitem%d%d",i,i);
        lv.pszText = (LPTSTR)(LPCTSTR)str;
        m_list.SetItem(&lv);
    }你试试看
      

  4.   

    去掉LVS_OWNERDRAWFIXED样式,如果你没有实现自绘(重载CLisetCtrl::DrawItem()方法)的话。
      

  5.   

    谢谢,是LVS_OWNERDRAWFIXED的问题