最后点击的那一项我可能按住CTRL键再接下鼠标又取消选定了,所以这时候要的是它之前选定的那项.

解决方案 »

  1.   

    我这里有个用 CMFCListCtrl 的代码,以前写的:BOOL CXXXView::IsListItemSelected(int nItem)
    {
        if (m_wndTaskScheduleList.GetSafeHwnd())
        {
            POSITION posItemPosition = m_wndTaskScheduleList.GetFirstSelectedItemPosition();
            if (posItemPosition != NULL)
            {
                while (posItemPosition)
                {
                    if (m_wndTaskScheduleList.GetNextSelectedItem(posItemPosition) == nItem)
                    {
                        return TRUE;
                    }
                }
            }
        }    return FALSE;
    }
      

  2.   

    用GetSelectionMark函数返回所选择的当前行.
      

  3.   

    void CTestView::OnClickListctrl(NMHDR* pNMHDR, LRESULT* pResult)
    {
        NM_LISTVIEW*   pView=(NM_LISTVIEW*)pNMHDR;
        int item=pView->iItem;
        int subitem=pView->iSubItem;
        *pResult = 0;
    }
    以上方法获取最后点击的时哪一行哪一列
    typedef   struct   tagNMLISTVIEW{   
          NMHDR       hdr;   
          int         iItem;   
          int         iSubItem;  /**/   
          UINT         uNewState;   
          UINT         uOldState;   
          UINT         uChanged;   
          POINT       ptAction;   
          LPARAM     lParam;   
      }   NMLISTVIEW,   FAR   *LPNMLISTVIEW;
      

  4.   

    是ListCtrl的GetSelectionMark()函数啊,它的返回值就是你需要的,可以取到得
      

  5.   

    ListCtrl的GetSelectionMark()只能返回行
    好像没有办法返回目前点击的列