参考过C的代码,但在delphi下仍然报错65.int                     CEGListView::AddItem(CHAR * pszText )
66.{
67.        LV_ITEM         lvi;
68.        lvi.pszText = pszText;
69.        lvi.cchTextMax = (int)strlen( pszText);
70.        lvi.mask = LVIF_TEXT;
71.        lvi.iItem = GetItemCount();
72.        lvi.iSubItem = 0;
73.        return ListView_InsertItem( m_hWnd, &lvi );
74.}
75. 

解决方案 »

  1.   

    TListView不是有Add和Insert方法么。。男儿膝下有黄金。。不要随便乱跪
      

  2.   

     +1 , 无需为帖子拿不出分就那样子说话的。楼主的代码不是delphi的语法,直接拿到delphi用,当然出错。若能提供你的邮箱,给你一个TListView应用的例子。
      

  3.   

    谢谢gzzai
    [email protected]
      

  4.   

    可以参考 TCustomListView.Add方法,在ComCtrls中,封装好了的
      

  5.   

    TCustomListView.Add 我也看过,他最后也是使用ListView_InsertItem方法进行Add,看不明白的是在lParam参数中他传进去的是longint(TListTiemClass),这个就不能理解了,总不能也跟着去Create一个再Add吧,那这样我就没必要单独使用ListView_InsertItem,我还不如直接用TListView.Add方法,我是要找根本原因,不然不会无聊发这个贴
      

  6.   

    你要用纯API操作Listview?有志气!
      

  7.   

    大哥你误会了,不是我要专牛角尖,是我代码有需要,而且我也用过C,用C那些操作都没问题,现在放到Delphi上就不行,所以想明白Delphi中应该怎么使用
      

  8.   

    我看到ListView_InsertItem操作时成功的,大家可以用断点看,Insert是有结果的,只是在结束代码段后出错,我的理解是D7有对VCL的某些消息或处理机制,对我们用API Insert的Item没有满足VCL的检查条件
    愚人见解,还望高人指点
      

  9.   

    我研究的结果:
    procedure TForm1.Button1Click(Sender: TObject);
    var
      LVItem: TLVItem;
    begin
      with LVItem do begin
        iItem := ListView1.Items.Count;
        mask := LVIF_TEXT or LVIF_PARAM;
        iSubItem := 0;
        pszText := '结构保持一致';
        lParam := longint(TListItem.Create(ListView1.Items));
      end;  ListView_InsertItem(ListView1.Handle, LVItem);
    end;