1.如何在选中列表中的某一行时,取得该行各项的值?
2.如何在列表编辑各项的值?

解决方案 »

  1.   

    void CDeleteFunction::OnClickList(NMHDR* pNMHDR, LRESULT* pResult) 
    {    for(int i=0;i<m_list.GetItemCount();i++)
    {
    if(m_list.GetItemState(i,LVIS_SELECTED)==LVIS_SELECTED)
    break;
    }
    m_selectindex=i;
    int cx1= m_list.GetColumnWidth(0);
        CRect rITem;
        m_list.GetItemRect(i,&rITem,LVIR_BOUNDS);
        CRect r1=rITem;
        r1.right =r1.left + cx1;
        CPoint p;
        m_list.GetItemPosition( i,&p);
        CString text ="";
        if(r1.PtInRect(p))
    {
          text = m_list.GetItemText(i,0);
    }
    else
    return;
        m_selectFun=text;
    AfxMessageBox(m_selectFun);
        CString strState;
    strState.Format(" 当前选中函数为 %s ",text);
    UpdateWindow();
    ((CWnd*)GetDlgItem(IDC_STATICRESULT))->SetWindowText(strState);
    *pResult = 0;
    }
      

  2.   

    for(int i=0;i<m_list.GetItemCount();i++)
    {
    if(m_list.GetItemState(i,LVIS_SELECTED)==LVIS_SELECTED)
    break;
    }
    m_selectindex=i;
    int cx1= m_list.GetColumnWidth(0);
        CRect rITem;
        m_list.GetItemRect(i,&rITem,LVIR_BOUNDS);
        CRect r1=rITem;
        r1.right =r1.left + cx1;
        CPoint p;
        m_list.GetItemPosition( i,&p);
        CString text ="";
        if(r1.PtInRect(p))
    {
          text = m_list.GetItemText(i,0);
    }
    else
    return;
        m_selectFun=text;
    ------------------------------------------这一段为你索要的
      

  3.   

    你是说先取得索引,然后跟据鼠标位置取得列号,再取值?看来比较麻烦,没有象CListBox 一样有SelChanged 事件吗?