如何在ListView控件中正确更改焦点项?

时间:2014-09-11 22:23:16

标签: c++ windows listview winapi mfc

如果我想更改ListView控件中的焦点项,请执行以下操作:

BOOL setListFocusItem(CListCtrl* pList, int nIndex)
{
    return !!pList->SetItemState(nInd, LVIS_FOCUSED, LVIS_FOCUSED);
}

这是你的方式吗?

因为焦点本身会发生变化,但这会产生一个问题。例如,如果列表有100个项目,焦点是项目1.如果我然后调用我的方法setListFocusItem(99);,焦点将更改为项目99,但如果我按住Shift键单击项目90,我会期望列表中选择项目90到99。但是相反,列表会选择项目1到90.所以很明显,我的setListFocusItem()方法不会更改shift-click“first”位置。所以问题是如何做到这一点?

1 个答案:

答案 0 :(得分:3)

简答:使用LVM_SETSELECTIONMARK消息。

(在MFC-ese,CListCtrl::SetSelectionMark)。