发在C++区了
http://topic.csdn.net/u/20090902/10/fbf44d4d-3e24-4072-88ff-b145905325c8.html
DELPHI区也有
http://topic.csdn.net/u/20090901/10/27bb69f5-a9b7-4dd2-b91a-2d523d56534a.html
在哪回答都有分

解决方案 »

  1.   

    发送 LVM_FINDITEM 或者使用 ListView_FindItem 来查找想获取数据的Item。
    响应LVN_ODFINDITEM 获取 查找的item的数据。
      

  2.   

    ownerdraw的可能需要使用钩子函数来对textout进行处理,最终都是用textout输出字符的.....除非是图片的就没办法了..........
      

  3.   

    发送消息 LVN_GETDISPINFO 就可以获取数据了。
      

  4.   

    ownerDraw的确是有点麻烦,不能按一般的方法获取。只能用钩子了。
      

  5.   

    自绘有可能会把数据作为DATA绑定,这样就获取不到其文字,可以发送mask为LVIF_PARAM的LVM_GETITEM消息获取其DATA,然后根据地址看数据区内容,分析其格式,猜出结构来。如果比较复杂分析不出来就只能钩TextOut等函数了。
      

  6.   

    ListView_GetItem,ListView_GetItemText是不行的
    至于发送LVN_GETDISPINFO消息,我上面贴的代码就是,不过它能取Delphi的虚拟列表数据,但C++的取不到
    想知道C++的怎么取,有兴趣的可以试试,我就是试不出
      

  7.   

    //如果list(带OwnerData)已经有值可以:
    //功能:双击时拖一个edit(m_Edit2)到list的任何子项内。
    void CDlgTest::OnDblclkList1(NMHDR* pNMHDR, LRESULT* pResult) 
    {
    // TODO: Add your control notification handler code here
    NMLISTVIEW* pNMListView = (NMLISTVIEW*)pNMHDR;
    m_ListSelected=pNMListView->iItem;
    m_ListSubItem=pNMListView->iSubItem; if(m_ListSelected >=0)
    {
    CRect rc;
    m_List.GetSubItemRect(m_ListSelected,m_ListSubItem,LVIR_LABEL,rc);
      m_List.MapWindowPoints(this,&rc);
    m_Edit2.MoveWindow(rc);
    m_Edit2.SetFocus();
    CString txt=m_List.GetItemText(m_ListSelected,m_ListSubItem);
    m_Edit2.SetWindowText(txt);
    m_Edit2.SetSel(0,-1);
    }

    *pResult = 0;
    }