[英]CListCtrl selection
我正在嘗試做一些我認為很簡單的事情,但我似乎無法讓它發揮作用!
我有一個CListCtrl
,如果用戶在視圖空白區域中單擊,我想選擇列表中的最后一個元素。 我只能通過調用Select(lastElementInList)
來做到這一點,但是之前選擇的元素以及現在未被選中的元素周圍仍然有一個“邊界矩形”。
實現此的代碼如下:
int nSel = GetNextItem(-1, LVNI_SELECTED);
if (nSel != -1)
SetItemState(nSel, 0, LVIS_SELECTED);
Select(lastElementInList);
任何提示? 我錯過了什么?
您看到的“邊界矩形”表示該元素當前是“聚焦”的 ,即。 在這種狀態下,用戶交互(例如按下向上和向上箭頭)將從這一點開始。
改變集中的元素
要將焦點移動到新選擇的元素,您必須與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`
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.