Справочник по технологии COM
Страница 53. DispGetlDsOfNames


 

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);
}

 
Следующая статья »