AtlGetObjectSourceInterface
Chiamare la funzione per recuperare le informazioni sull'interfaccia di origine predefinita di un oggetto.
Importante |
---|
Questa funzione non può essere utilizzata nelle applicazioni eseguite in Windows Runtime. |
ATLAPI AtlGetObjectSourceInterface(
IUnknown* punkObj,
GUID* plibid,
IID* piid,
unsigned short* pdwMajor,
unsigned short* pdwMinor
);
Parametri
punkObj
[in] il puntatore Alle informazioni dell'oggetto per il quale deve essere restituito.plibid
[out] puntatore Al LIBID della libreria dei tipi contenente la definizione dell'interfaccia di origine.piid
[out] puntatore All'ID dell'interfaccia di origine dell'impostazione predefinita dell'oggetto.pdwMajor
[out] puntatore Al numero di versione principale della libreria dei tipi contenente la definizione dell'interfaccia di origine.pdwMinor
[out] puntatore Al numero di versione secondaria della libreria dei tipi contenente la definizione dell'interfaccia di origine.
Valore restituito
Un valore HRESULT standard.
Note
AtlGetObjectSourceInterface può fornire con l'id dell'interfaccia di origine predefinita, con il LIBID e dei numeri di versione principale e secondaria della libreria dei tipi che descrive tale interfaccia.
[!NOTA]
Affinché questa funzione correttamente recuperare le informazioni richieste, l'oggetto rappresentato da punkObj deve implementare IDispatch (e informazioni del tipo restituito da IDispatch::GetTypeInfo) più deve implementare anche IProvideClassInfo2 o IPersist.Le informazioni sul tipo per l'interfaccia di origine devono trovarsi nella stessa libreria dei tipi di informazioni sul tipo per IDispatch.
Esempio
L'esempio riportato di seguito viene illustrato come definire una classe del sink di evento, CEasySink, che riduce il numero di argomenti di modello che è possibile passare a IDispEventImpl i concetti di base nudi.EasyAdvise e EasyUnadvise utilizzano AtlGetObjectSourceInterface per inizializzare i membri IDispEventImpl prima di chiamare DispEventAdvise o 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);
}
};
Requisiti
Header: atlcom.h