我想在程序中响应鼠标双击事件,并能响应时获得所双击的item的序号,我已添加了如下的消息处理函数,但不知道该如何处置。请问如何实现?谢谢!
void CTest4View::OnDblclk(NMHDR* pNMHDR, LRESULT* pResult) 
{
// TODO: Add your control notification handler code here *pResult = 0;
}

解决方案 »

  1.   

    void CTest4View::OnLButtonDblClk(UINT nFlags, CPoint point)
    {
        UINT uFlags = 0;
        CListCtrl& ListCtrl = GetListCtrl();
        int nHitItem = ListCtrl.HitTest(point, &uFlags);
        ...
    }nHitItem即为双击之item
      

  2.   

    处理最好在此if下作。
    example:
    void CTest4View::OnLButtonDblClk(UINT nFlags, CPoint point)
    {
        UINT uFlags = 0;
        CListCtrl& ListCtrl = GetListCtrl();
        int nHitItem = ListCtrl.HitTest(point, &uFlags);    if (uFlags & LVHT_ONITEMLABEL)
        {
            // here is the effective nHitItem
            // your code that processes the item doubleclicked 
            // should be here
        }
        ...
    }
      

  3.   

    up
    取序号,CListCtrl::GetCurSel(好象是这个,最好查查MSDN)
      

  4.   

    void CTest4View::OnDbClickList1(NMHDR *pNMHDR, LRESULT *pResult)
    {
          LPNMLISTVIEW pNMLV = reinterpret_cast<LPNMLISTVIEW>(pNMHDR);
          int nHitItem = pNMLV->iItem ;      ......  // nHitItem即为双击之item
    }
      

  5.   

    加判断:
          if(nHitItem >=0)
          {
           //点中了item,操作...
          }
      

  6.   

    void CTest4View::OnDblclk(NMHDR* pNMHDR, LRESULT* pResult) 
    {
      // TODO: Add your control notification handler code here
      NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;
      int nItem = pNMListView->iItem;  // 这就是双击的item的序号
      int nSubItem = pNMListView->iSubItem; // 这是对应的子项号  CListCtrl& theCtrl = GetListCtrl(); // 取得对应的列表控件  // 下面获得该子项的文本内容
      CString sText = theCtrl.GetItemText(nItem, nSubItem);  *pResult = 0;
    }
      

  7.   

    coolover只能得到item,不能得到subItem.
    riverboat(诸葛不亮) 的方法也不行。试试就知道了。
    可以这样:
        将pNMListView中的ptAction,取出,然后进行subItemHitTest,然后可以同时得到item和iSubItem.