c++ - 如何正确更改ListView控件中的焦点项?

标签 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,但如果我转移-单击项目 90,我希望列表中包含要选择的项目 90 到 99。但列表会选择项目 1 到 90。显然,我的 setListFocusItem() 方法不会更改按住 Shift 键单击“第一个”位置。那么问题是如何让它做到这一点?

最佳答案

简短回答:使用 LVM_SETSELECTIONMARK消息。

(在 MFC 语言中, CListCtrl::SetSelectionMark )。

关于c++ - 如何正确更改ListView控件中的焦点项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25797912/

相关文章:

c++ - 这个C++结构是什么意思?

windows - echo -e 在 Windows 中等效?

Windows 窗体线程和事件 - ListBox 及时更新,但进度条遇到巨大延迟

android - 如何使用操作栏按钮动态添加到 ListView

c++ - 命名空间之前的预期初始化器

c++ - 默认构造函数自动创建的数组元素?

c - 创建 ListView 时的奇怪效果

android - 列表适配器仅将 1 个项目添加到 ListView

c++ - 循环枚举值

c - 在 Windows 中发出枚举监视器