AtlGetObjectSourceInterface
Appelez cette fonction pour extraire des informations sur l'interface source par défaut d'un objet.
Important
Cette fonction ne peut pas être utilisée dans les applications qui s'exécutent dans Windows Runtime.
ATLAPI AtlGetObjectSourceInterface(
IUnknown* punkObj,
GUID* plibid,
IID* piid,
unsigned short* pdwMajor,
unsigned short* pdwMinor
);
Paramètres
punkObj
[in] Pointeur vers l'objet pour lequel les informations doivent être retournées.plibid
[out] Pointeur vers le LIBID de la bibliothèque de types qui contient la définition de l'interface source.piid
[out] Pointeur vers l'ID d'interface de l'interface source par défaut de l'objet.pdwMajor
[out] Pointeur vers le numéro de version principale de la bibliothèque de types qui contient la définition de l'interface source.pdwMinor
[out] Pointeur vers le numéro de version secondaire de la bibliothèque de types qui contient la définition de l'interface source.
Valeur de retour
Une valeur HRESULT standard.
Notes
AtlGetObjectSourceInterface peut vous permettre l'ID d'interface de l'interface source par défaut, avec le LIBID et les numéros de version secondaire de la bibliothèque de types décrivant cette interface.
[!REMARQUE]
Pour que cette fonction récupérer correctement les informations demandées, l'objet représenté par punkObj doit implémenter IDispatch (et les informations de type de retour par IDispatch::GetTypeInfo) ainsi que celui-ci doit également implémenter IProvideClassInfo2 ou IPersist.Les informations de type pour l'interface source doivent être à la même bibliothèque de types que les informations de type pour IDispatch.
Exemple
L'exemple suivant montre comment vous pouvez définir une classe de récepteur d'événements, CEasySink, ce qui réduit le nombre d'arguments template que vous pouvez passer à IDispEventImpl aux bases nues.EasyAdvise et EasyUnadvise utilisent AtlGetObjectSourceInterface pour initialiser les membres d' IDispEventImpl avant d'appeler DispEventAdvise ou 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);
}
};
Configuration requise
Header: atlcom.h