CListCtrl选择

时间:2014-06-03 08:23:08

标签: c++ mfc clistctrl

我试图做一些我觉得很简单的事情,但我似乎无法让它发挥作用!

我有一个CListCtrl,如果用户点击视图空白区域,我想选择列表中的最后一个元素。我可以通过调用Select(lastElementInList)来做到这一点,但之前选择的元素现在已经取消选中,但仍然有一个"边界矩形"在它周围。

实现此功能的代码如下:

    int nSel = GetNextItem(-1, LVNI_SELECTED);
    if (nSel != -1)
        SetItemState(nSel, 0, LVIS_SELECTED);

    Select(lastElementInList);

任何提示?我错过了什么?

1 个答案:

答案 0 :(得分:3)

您看到的“边界矩形”表示该元素当前“聚焦”,即。在这种状态下,用户交互(例如按下向上和向上箭头)将从这一点开始。


更改焦点元素

要将焦点移动到新选择的元素,您必须与LVIS_FOCUSED一起使用SetItemState,如下例所示:

if (nSel != -1)
    SetItemState (nSel, ~LVIS_FOCUSED, LVIS_FOCUSED);          // (1)

SetItemState (lastElementInList, LVIS_FOCUSED, LVIS_FOCUSED);  // (2)

// (1) -> Remove focus from `nSel`
// (2) -> Add focus to `lastElementInList`