在 ListCtrl 中怎样得到光标 所在 位置 的项?

解决方案 »

  1.   

    UINT uFlags = LVHT_ONITEM;
    CPoint point;
    ::GetCursorPos(&point); // 得到鼠标光标的位置
    CRect rect;
    m_Listctrl.GetWindowRect(&rect);
    point.x -= rect.left; // 将鼠标光标的位置由屏幕坐标变成控件的坐标
    point.y -= rect.top; int nHitItem = m_Listctrl.HitTest(point, &uFlags);// 得到光标 所在 位置 的项
      

  2.   

    创建ListCtrl的时候有一个扩展风格就是鼠标悬停的时候自动选中所在的项。
      

  3.   

    seu07201213(汪洋中的一片叶子) 的这个还可以
      

  4.   

    GetNextItem( -1, LVNI_ALL | LVNI_SELECTED)
      

  5.   

    楼主也在用CListCtrl啊,不知能否解答在下一个问题,就是动态改变条目颜色我可以在 CMyDlg 主对话框里加 ON_NOTIFY ( NM_CUSTOMDRAW, IDC_LISTCTRL, OnCustomdrawMyList ) 来调用OnCustomdrawMyList重画条目颜色,就象http://www.codeproject.com/listctrl/highlightlistctrl.asp这个例子似的,
    但是我要是把这个抽出来单独做个类呢,比如我要做class CMyListCtrl : public CListCtrl
    在CMyListCtrl里加OnCustomdrawMyList,现在该如何调用它呢,它不象对话框里,用列表的ID 使用ON_NOTIFY ( NM_CUSTOMDRAW, IDC_LISTCTRL, OnCustomdrawMyList )来调用,现在这个类还没有IDC_LISTCTRL,怎么调用呢?