强制IAutoComplete刷新数据集?

时间:2013-09-13 15:02:37

标签: windows winapi com autocomplete windows-controls

我正在实现一个自定义IEnumString,用作IAutoComplete2对象的数据集。

问题是,当在编辑框中输入第一个字符时,IAutoComplete2似乎只在我的IEnumString上调用reset,然后依赖于在后续按键期间数据集保持静态(并在此之后进行本地过滤)这一事实。

我尝试删除IAutoComplete2对象,然后立即创建一个新对象并将其附加到控件,但这会导致shell32崩溃。

这甚至可能吗?

1 个答案:

答案 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}}