刚才说得不大明白再补充一下:
如何在双击item时获得该item的字串?

解决方案 »

  1.   

    handle DBClick event of listview,and then ,use the API:
    GetCursorPos to get current cursor position,
    then, use HitTest function of ListView to set selectedItem.VB Code:Private Sub ListView1_DblClick()
        Dim X1, Y1 As Long
        Dim lpPoint As POINTAPI
        GetCursorPos lpPoint
        ScreenToClient Me.hwnd, lpPoint
        X1 = lpPoint.x * Screen.TwipsPerPixelX
        Y1 = lpPoint.y * Screen.TwipsPerPixelY
        If Not ListView1.HitTest(X1, Y1) Is Nothing Then
            Set ListView1.SelectedItem = ListView1.HitTest(X1, Y1)
    End Sub
      

  2.   

    当你双击CtrlList时(不管你是双击空白区,还是双击某个item),父窗口都会收到一个NM_DBCLICK消息,你在ClassVizard里面找一下,建立一个相应的消息映射函数。在里面加上你自已的代码就是了。我做了一个简单的例子如下void CYourDlg::OnDblclkYourList(NMHDR* pNMHDR, LRESULT* pResult) 
    {
    // TODO: Add your control notification handler code here
    NM_LISTVIEW* pNMListView=(NM_LISTVIEW*)pNMHDR; int nSelected=pNMListView->iItem;//如果双击的是空白区,这个值应该是-1;
    if(nSelected>=0)
    {
    //先进行ItemChanged的相应处理,
                       m_FileName=m_YourList.GetItemText(nSelected,0);//这就是选择到的item的字串
                       ………   //OnItemchangedYourList中的相应处理代码找过来就行了,
                       ……………                  //然后,调用OnOpen()函数,(假设你的对话框上有"打开"按钮,OnOpen()是其相对的处理函数
    this->OnOpen();
    }

    *pResult = 0;
    }
      

  3.   

    POSITION pos = m_list.GetFirstSelectedItemPosition();
    if ( pos )
    {
      int nItem = m_list.GetNextSelectedItem(pos);
      CString strText = m_list.GetItemText( nItem);
    }
      

  4.   

    将void CYourDlg::OnDblclkYourList(NMHDR* pNMHDR, LRESULT* pResult) 
    中的NMHDR* pNMHDR 改成 NMITEMACTIVATE* pNITEM 你会有意想不到的效果