Страница 53 из 111 DispGetlDsOfNames По информации о типе преобразует заданные имена в соответствующие DISPID. Это рекомендуемая реализация IDispatch::GetIDsOfNames. HRESULT DispGetIDsOfNames ( ITypeInfo*ptinfo, OLECHAR FAR* FAR* rgszNames, unsigned int cNames, DISPID FAR* rgdispid );
Параметры: - ptinfo - Указатель на информацию о типе для интерфейса. Эта информация специфична для одного интерфейса и кода языка, так что функции нет необходимости передавать идентификатор интерфейса (IID) и LCID.
- rgszNames - Содержащий имена массив строк, это может быть тот же самый массив, что был передан Displnvoke в структуре DISPPARAMS. Если cNames больше 1, то первое имя рассматривается как имя метода, а последующие — как имена параметров данного метода.
- cNames - Число элементов rgszNames.
- rgdispid - Указатель на массив DISPID, который функция должна заполнить. Первый идентификатор соответствует имени метода, остальные — именам его параметров.
Коды возврата: Из возвращенного HRESULT получают один из следующих кодов возврата: Код возврата | Значение | S_OK | Интерфейс поддерживается. | E_INVALIDARG | Один из параметров неверен. | DISP_E_UNKNOWNNAME | Одно или несколько заданных имен неизвестны. В элементах возвращаемого массива DISPID, соответствующих неизвестным именам, будет содержаться значение DISPID_UNKNOWN. | Другие | Могут также возвращаться любые коды возврата ITypelnfo-Invoke. | Пример: Следующий код из примера Lines (файл Points.cpp) реализует функцию-член GetlDs-OfNames для класса CPoints с помощью DispGetlDsOfNames. STDMETHODIMP CPoints::GetIDsOfNames( REFIID riid, OLECHAR FAR* FAR* rgszNames, UINT cNames, LCID lcid, DISPID FAR* rgdispid) { return DispGetIDsOfNames(m_ptinfo, rgszNames, cNames, rgdispid); }
|