如何在list control中,点击某行数据时产生相应的相应?是不是用控件的NM_CLICK函数?如果是的话,那么这个函数中的参数是什么意思?因为我添加这个函数后,函数的原型为:void CmyDlg::OnClickList3(NMHDR* pNMHDR, LRESULT* pResult) 我怎么得到选中那行的序号?还有,能否对list control中数据按某一列进行排序?怎么做啊?谢谢各位老大了,小弟是个菜鸟。

解决方案 »

  1.   

    还有如何能够不按ctrl就能选中多行?搞不定啊。
      

  2.   

    产生ITEMCHANGED消息,修改了item的Select State
    不按ctrl就能选中多行?自己设置item的Select State
    pmyListCtrl->SetItemState(n, LVIS_SELECTED, LVIS_SELECTED);
      

  3.   

    void CTest6Dlg::OnClickList1(NMHDR* pNMHDR, LRESULT* pResult) {
    DWORD dwPos = GetMessagePos(); CPoint point( LOWORD(dwPos), HIWORD(dwPos) ); m_list.ScreenToClient(&point);  LVHITTESTINFO lvinfo; lvinfo.pt = point; lvinfo.flags = LVHT_ABOVE;     int nItem = m_list.SubItemHitTest(&lvinfo); if(nItem != -1) { CString strtemp; strtemp.Format("单击的是第%d行第%d列", lvinfo.iItem, lvinfo.iSubItem); AfxMessageBox(strtemp); }
    *pResult = 0;}
      

  4.   

    http://www.codeguru.com/Cpp/controls/listview/sorting
      

  5.   

    首先谢谢各位了,太谢谢了!
    但是,关于多行选中,
    vcmute(横秋) 兄的方法试过了,但是选中的显示为灰色,而我单击某一行时该行显示为蓝色,不知道怎样才能弄成蓝色。
      

  6.   

    m_list.SetItemState(nIndex, LVIS_SELECTED|LVIS_FOCUSED, LVIS_SELECTED|LVIS_FOCUSED);
      

  7.   

    可以做个循环设置
    for(int nIndex=0; nIndex<m_list.GetItemCount(); nIndex++)
    m_list.SetItemState(nIndex, LVIS_SELECTED|LVIS_FOCUSED, LVIS_SELECTED|LVIS_FOCUSED);
      

  8.   

    我试了一下,还是不行啊,我选中某行,再选中另一行,这一行不再加亮显示了。难道是由什么paint之类的函数把它又重画啦?我加入的代码如下:void CGDSCDlg::OnClickList3(NMHDR* pNMHDR, LRESULT* pResult) 
    {
    DWORD dwPos = GetMessagePos();
    CPoint point( LOWORD(dwPos), HIWORD(dwPos) );
    m_ListCtrl1.ScreenToClient(&point);  LVHITTESTINFO lvinfo;
    lvinfo.pt = point;
    lvinfo.flags = LVHT_ABOVE; int nItem = m_ListCtrl1.SubItemHitTest(&lvinfo); if(nItem != -1)
    {
    char received[100];
    int i = lvinfo.iItem;
    m_ListCtrl1.SetItemState(i, LVIS_SELECTED|LVIS_FOCUSED, LVIS_SELECTED|LVIS_FOCUSED);
    }
    *pResult = 0;
    }
      

  9.   

    m_list.SetExtendedStyle(m_list.GetExtendedStyle()|LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES);