从CListCtrl派生一个类,响应NM_CLICK消息如下:BEGIN_MESSAGE_MAP(CListCtrlEx, CListCtrl)
//{{AFX_MSG_MAP(CListCtrlEx)
ON_NOTIFY_REFLECT(NM_CLICK, OnClick)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()在OnClick()函数中用GetFirstSelectedItemPosition()函数和GetItemText()来得到选中的item的string就可以知道用户点了那一项了

解决方案 »

  1.   

    LVN_ITEMCHANGED 可以让你知道哪个Item的状态被改变了可以用ClassWizard加入OnItemchanging(NMHDR* pNMHDR, LRESULT* pResult)
      

  2.   

    void CView::OnItemchangedList1(NMHDR* pNMHDR, LRESULT* pResult) 
    {
    NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;
    // TODO: Add your control notification handler code here
    if(m_myListCtrl.GetFirstSelectedItemPosition()) 
    {
    ...//your code
    } *pResult = 0;
    }
      

  3.   

    Why??
    为什么不用
    void CMyList::OnLButtonUp(UINT nFlags, CPoint point) 
    {
    BOOL i;
    m_CurSel=this->ItemFromPoint(point,i);
    CListBox::OnLButtonUp(nFlags, point);
    }
    简单\明了\正确.
      

  4.   

    我以前做过这方面的程序,对话框好像对来自ListCtrl的NM_CLICK消息不作处理。
    你可以响应HDN_ITEMCHANGED消息。例程如下:
    void CYourDlg::OnItemchangedYourList(NMHDR* pNMHDR, LRESULT* pResult) 
    {
    HD_NOTIFY *phdn = (HD_NOTIFY *) pNMHDR;
    // TODO: Add your control notification handler code here
    NM_LISTVIEW* pNMListView=(NM_LISTVIEW*)pNMHDR;
    int nSelected=pNMListView->iItem;
    if(nSelected>=0)//nSelected就是选中的Item的序号
    {
    text=m_ContentList.GetItemText(nSelected,0);
    ………
    } *pResult = 0;
    }
      

  5.   

    多谢各位。可惜小弟分数有限,三位大虾回答正确,各得10分,happylaodu最详细,在加20分。
      

  6.   

    多行的时候呢?
    int nSelected=pNMListView->iItem;
    返回仍是这样么?