AtlGetObjectSourceInterface
Эта функция вызывается для получения сведений о по умолчанию интерфейсе источника объекта.
Важно!
Эту функцию нельзя использовать в приложениях, выполняемых в Среда выполнения Windows.
ATLAPI AtlGetObjectSourceInterface(
IUnknown* punkObj,
GUID* plibid,
IID* piid,
unsigned short* pdwMajor,
unsigned short* pdwMinor
);
Параметры
punkObj
[in] Указатель на объект, для которого необходимо вернуть сведения.plibid
[out] Указатель на идентификатор LIBID библиотеки типов, содержащие определения интерфейсов источника.piid
[out] Указатель на идентификатор интерфейса интерфейса-источника объекта по умолчанию.pdwMajor
[out] Указатель на число основной номер версии библиотеки типов, содержащие определения интерфейсов источника.pdwMinor
[out] Указатель на число дополнительный номера версии библиотеки типов, содержащие определения интерфейсов источника.
Возвращаемое значение
Стандартное значение HRESULT.
Заметки
AtlGetObjectSourceInterface может предоставить пользователя с идентификатором интерфейса по умолчанию интерфейса-источника, а также идентификатор LIBID и номерами основной и дополнительный номера версии библиотеки типов, описывающую этот интерфейс.
Примечание
Для этой функции для успешного получения запрашиваемых данных, объект, представленный punkObj должен реализовать IDispatch (и данные типа возвращаемого значения по IDispatch::GetTypeInfo) плюс он также должен реализовывать или IProvideClassInfo2 или IPersist.Сведения о типе интерфейса источника, должна находиться в той же библиотеке типов как сведения о типе для IDispatch.
Пример
Пример в выставками, как можно определить класс приемника событий, CEasySink, уменьшает число аргументов шаблона, которые можно загрузить на IDispEventImpl по чуть-чуть основам. EasyAdvise и EasyUnadvise используют AtlGetObjectSourceInterface для инициализации элементов IDispEventImpl перед вызовом DispEventAdvise или DispEventUnadvise.
template <UINT nID, class T>
class CEasySink : public IDispEventImpl<nID, T>
{
public:
HRESULT EasyAdvise(IUnknown* pUnk)
{
AtlGetObjectSourceInterface(pUnk,
&m_libid, &m_iid, &m_wMajorVerNum, &m_wMinorVerNum);
return DispEventAdvise(pUnk, &m_iid);
}
HRESULT EasyUnadvise(IUnknown* pUnk)
{
AtlGetObjectSourceInterface(pUnk,
&m_libid, &m_iid, &m_wMajorVerNum, &m_wMinorVerNum);
return DispEventUnadvise(pUnk, &m_iid);
}
};
Требования
Header: atlcom.h