如果我想要更改ListView控件中的焦点项目,我执行以下操作:
BOOL setListFocusItem(CListCtrl* pList, int nIndex) { return !!pList->SetItemState(nInd, LVIS_FOCUSED, LVIS_FOCUSED); }
这是你做的方式吗?
因为焦点本身在改变,但是这有一个问题。 例如,如果列表有100个项目,焦点在项目1上。如果我然后调用我的方法setListFocusItem(99);
焦点改变到项目99,但是如果我按住Shift键并点击项目90,我想期望列表具有项目90到99被select。 但是,而不是列表select项目1至90.所以显然,我的setListFocusItem()
方法不会改变移位点击“第一”的位置。 所以问题是如何使它做到这一点?
简短的回答:使用LVM_SETSELECTIONMARK
消息。
(在MFC-ese, CListCtrl::SetSelectionMark
)。