Принуждение IAutoComplete для обновления набора данных?
Я реализую пользовательский IEnumString для использования в качестве набора данных для объекта IAutoComplete2.
Проблема заключается в том, что IAutoComplete2, по-видимому, вызывает сброс только в моем IEnumString, когда первый символ вводится в поле ввода, а затем полагается на тот факт, что набор данных остается статическим (и выполняет локальную фильтрацию после этого) во время последующих нажатий клавиш.
Я попытался удалить объект IAutoComplete2, а затем немедленно создать новый и прикрепить его к элементу управления, но это привело к сбою в shell32.
Это вообще возможно?
1 ответ
Если вы хотите сбросить перечисление, вы должны 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());