通过键入前几个字符跳转到列表框项目

rfe*_*gue 5 user-interface winapi mfc

我有一个项目列表(可能很大),用户必须从中选择一个.我想允许用户键入所需项目的前几个字母,以跳转到列表中的正确位置.默认情况下,每个按键跳转到以该字母开头的第一个项目,因此您无法键入前几个字母.有没有直接的方法来做到这一点?任何CodeProject或其他这样的例子?

我已经找了好几个小时,发现了IAutocomplete的任意数量的样本,但这在这里没有用,因为我需要保证结果在列表中.

我能想到的唯一方法是从CListBox派生,自己捕获键击,找到项目,运行一个计时器,以便在足够的暂停后新的键击将开始一个新的搜索...因为我不是一个MFC乔克,这是令人生畏的.任何提示非常感谢.

一个澄清说明:我的最终目标实际上是为DropDownList样式的ComboBox获取此键盘行为(即没有编辑框).缺少编辑框排除了大多数自动完成代码,并且需要ComboBox功能意味着我不能单独使用CListCtrl.

rfe*_*gue 11

在经历了多次不必要的痛苦之后,我发现真正正确的答案就是使用LBS_SORT.只需指定此样式,基本的vanilla列表框就支持我想要的增量搜索键盘快捷键样式.没有LBS_SORT(或组合框的CBS_SORT),你会得到令人生气且几乎无用的跳转到第一个字母的行为.我没有尝试LBS_SORT,因为我的列表内容无论如何都是按排序顺序添加的.

所以十几个小时的调查自定义控件等都是徒劳的,因为Microsoft文档没有提到LBS_SORT描述中这种重要的行为差异!

感谢所有贡献的人.