如果我想更改 ListView 控件中的焦点项,请执行以下操作:
BOOL setListFocusItem(CListCtrl* pList, int nIndex)
{
return !!pList->SetItemState(nInd, LVIS_FOCUSED, LVIS_FOCUSED);
}
你就是这样做的吗?
因为焦点本身发生了变化,但这会产生一个问题。例如,如果列表有 100 个项目,并且焦点位于项目 1 上。如果我随后调用我的方法 setListFocusItem(99);
,焦点将更改为项目 99,但如果我转移-单击项目 90,我希望列表中包含要选择的项目 90 到 99。但列表会选择项目 1 到 90。显然,我的 setListFocusItem()
方法不会更改按住 Shift 键单击“第一个”位置。那么问题是如何让它做到这一点?
最佳答案
简短回答:使用 LVM_SETSELECTIONMARK
消息。
(在 MFC 语言中, CListCtrl::SetSelectionMark
)。
关于c++ - 如何正确更改ListView控件中的焦点项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25797912/