2

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

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

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

这甚至可能吗?

4

1 回答 1

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()); 
于 2013-09-13T19:58:13.193 回答