我正在实现一个自定义IEnumString,用作IAutoComplete2对象的数据集。
问题是,当在编辑框中输入第一个字符时,IAutoComplete2似乎只在我的IEnumString上调用reset,然后依赖于在后续按键期间数据集保持静态(并在此之后进行本地过滤)这一事实。
我尝试删除IAutoComplete2对象,然后立即创建一个新对象并将其附加到控件,但这会导致shell32崩溃。
这甚至可能吗?
答案 0 :(得分:2)
如果要重置枚举,则应QueryInterface
IAutoComplete
IAutoCompleteDropDown
ResetEnumerator
接口,然后致电 CComPtr<IAutoComplete> m_spAutoComplete;
CHECKHR(CoCreateInstance(CLSID_AutoComplete, NULL, CLSCTX_INPROC_SERVER, IID_PPV_ARGS(&m_spAutoComplete)));
。
创建:
CComPtr<IAutoCompleteDropDown> spAutoCompleteDD;
CHECKHR(m_spAutoComplete->QueryInterface(IID_PPV_ARGS(&spAutoCompleteDD)));
CHECKHR(spAutoCompleteDD->ResetEnumerator());
如果要重置枚举:
{{1}}