IDispEventSimpleImpl Sınıfı
Bu sınıf, bir tür kitaplığından tür bilgileri almadan yöntemlerin uygulamalarını IDispatch
sağlar.
Önemli
Bu sınıf ve üyeleri Windows Çalışma Zamanı yürütülen uygulamalarda kullanılamaz.
Sözdizimi
template <UINT nID, class T, const IID* pdiid>
class ATL_NO_VTABLE IDispEventSimpleImpl : public _IDispEventLocator<nID, pdiid>
Parametreler
Nıd
Kaynak nesne için benzersiz bir tanımlayıcı. Bileşik denetimin temel sınıfı olduğunda IDispEventSimpleImpl
, bu parametre için istenen kapsanan denetimin kaynak kimliğini kullanın. Diğer durumlarda, rastgele bir pozitif tamsayı kullanın.
T
kullanıcının sınıfından türetilir IDispEventSimpleImpl
.
pdiid
Bu sınıf tarafından uygulanan olay dispinterface IID işaretçisi.
Üyeler
Genel Yöntemler
Veri Akışı Adı | Açıklama |
---|---|
IDispEventSimpleImpl::Advise | Varsayılan olay kaynağıyla bağlantı kurar. |
IDispEventSimpleImpl::D ispEventAdvise | Olay kaynağıyla bir bağlantı kurar. |
IDispEventSimpleImpl::D ispEventUnadvise | Olay kaynağıyla bağlantıyı keser. |
IDispEventSimpleImpl::GetIDsOfNames | E_NOTIMPL döndürür. |
IDispEventSimpleImpl::GetTypeInfo | E_NOTIMPL döndürür. |
IDispEventSimpleImpl::GetTypeInfoCount | E_NOTIMPL döndürür. |
IDispEventSimpleImpl::Invoke | Olay havuzu eşlemesinde listelenen olay işleyicilerini çağırır. |
IDispEventSimpleImpl::Unadvise | Varsayılan olay kaynağıyla bağlantıyı keser. |
Açıklamalar
IDispEventSimpleImpl
, bu arabirimdeki her yöntem/olay için uygulama kodu sağlamanıza gerek kalmadan bir olay dispinterface uygulama yöntemi sağlar. IDispEventSimpleImpl
yöntemlerin IDispatch
uygulamalarını sağlar. Yalnızca işlemek istediğiniz olaylar için uygulama sağlamanız gerekir.
IDispEventSimpleImpl
olayları uygun işleyici işlevine yönlendirmek için sınıfınızdaki olay havuzu eşlemesiyle birlikte çalışır. Bu sınıfı kullanmak için:
İşlemek istediğiniz her nesnedeki her olay için olay havuzu eşlemesine bir SINK_ENTRY_INFO makro ekleyin.
Her bir girişe parametre olarak bir _ATL_FUNC_INFO yapısına bir işaretçi geçirerek her olay için tür bilgilerini sağlayın. x86 platformunda değerin
_ATL_FUNC_INFO.cc
__stdcall geri çağırma işlevi çağırma yöntemiyle CC_CDECL olması gerekir.Kaynak nesne ile temel sınıf arasında bağlantı kurmak için DispEventAdvise çağrısı yapın.
Bağlantıyı kesmek için DispEventUnadvise'yi çağırın.
Olayları işlemeniz gereken her nesne için öğesinden IDispEventSimpleImpl
türetmelisiniz (nID için benzersiz bir değer kullanarak). Temel sınıfı, bir kaynak nesneye eklemeden sonra farklı bir kaynak nesneye danışmanlık yaparak yeniden kullanabilirsiniz, ancak tek seferde tek bir nesne tarafından işlenebilen kaynak nesne sayısı üst sınırı, temel sınıf sayısıyla IDispEventSimpleImpl
sınırlıdır.
IDispEventSimplImpl
bir tür kitaplığından arabirim hakkında tür bilgisi almaması dışında IDispEventImpl ile aynı işlevselliği sağlar. Sihirbazlar yalnızca tabanlı IDispEventImpl
kod oluşturur, ancak kodu el ile ekleyerek kullanabilirsiniz IDispEventSimpleImpl
. Olay arabirimini açıklayan bir tür kitaplığınız yoksa veya tür kitaplığını kullanmayla ilgili ek yükü önlemek istediğinizde kullanın IDispEventSimpleImpl
.
Not
IDispEventImpl
ve IDispEventSimpleImpl
ana COM nesnenizdeki sınıf üyelerine doğrudan erişim izni verirken her IDispEventImpl
veya IDispEventSimpleImpl
temel sınıfın ayrı bir COM kimliği olarak davranmasını sağlamak için kendi uygulamalarını IUnknown::QueryInterface
sağlayın.
ActiveX olay havuzlarının CE ATL uygulaması yalnızca HRESULT türünde dönüş değerlerini destekler veya olay işleyicisi yöntemlerinizden geçersizdir; diğer dönüş değerleri desteklenmez ve davranışı tanımlanmamıştır.
Daha fazla bilgi için bkz . IDispEventImpl'i Destekleme.
Devralma Hiyerarşisi
_IDispEvent
_IDispEventLocator
IDispEventSimpleImpl
Gereksinimler
Üst bilgi: atlcom.h
IDispEventSimpleImpl::Advise
pUnk ile temsil edilen olay kaynağıyla bağlantı kurmak için bu yöntemi çağırın.
HRESULT Advise(IUnknown* pUnk);
Parametreler
Punk
[in] Olay kaynağı nesnesinin IUnknown
arabirimine ilişkin bir işaretçi.
Dönüş Değeri
S_OK veya herhangi bir hata HRESULT değeri.
Açıklamalar
Bağlantı kurulduktan sonra pUnk'tan tetiklenen olaylar, olay havuzu eşlemesi yoluyla sınıfınızdaki işleyicilere yönlendirilir.
Not
Sınıfınız birden çok IDispEventSimpleImpl
sınıftan türetiliyorsa, çağrının kapsamını ilgilendiğiniz belirli bir temel sınıfla karşılayarak bu yönteme yapılan çağrıları kesinleştirmeniz gerekir.
Advise
varsayılan olay kaynağıyla bir bağlantı kurar, AtlGetObjectSourceInterface tarafından belirlenen nesnenin varsayılan olay kaynağının IID değerini alır.
IDispEventSimpleImpl::D ispEventAdvise
pUnk ile temsil edilen olay kaynağıyla bağlantı kurmak için bu yöntemi çağırın.
HRESULT DispEventAdvise(IUnknown* pUnk const IID* piid);
Parametreler
Punk
[in] Olay kaynağı nesnesinin IUnknown
arabirimine ilişkin bir işaretçi.
piid
Olay kaynağı nesnesinin IID'sine bir işaretçi.
Dönüş Değeri
S_OK veya herhangi bir hata HRESULT değeri.
Açıklamalar
Daha sonra pUnk'tan tetiklenen olaylar, olay havuzu eşlemesi yoluyla sınıfınızdaki işleyicilere yönlendirilir.
Not
Sınıfınız birden çok IDispEventSimpleImpl
sınıftan türetiliyorsa, çağrının kapsamını ilgilendiğiniz belirli bir temel sınıfla karşılayarak bu yönteme yapılan çağrıları kesinleştirmeniz gerekir.
DispEventAdvise
içinde pdiid
belirtilen olay kaynağıyla bir bağlantı kurar.
IDispEventSimpleImpl::D ispEventUnadvise
pUnk tarafından temsil edilen olay kaynağıyla bağlantıyı keser.
HRESULT DispEventUnadvise(IUnknown* pUnk const IID* piid);
Parametreler
Punk
[in] Olay kaynağı nesnesinin IUnknown
arabirimine ilişkin bir işaretçi.
piid
Olay kaynağı nesnesinin IID'sine bir işaretçi.
Dönüş Değeri
S_OK veya herhangi bir hata HRESULT değeri.
Açıklamalar
Bağlantı kesildikten sonra olaylar artık olay havuzu eşlemesinde listelenen işleyici işlevlerine yönlendirilmeyecek.
Not
Sınıfınız birden çok IDispEventSimpleImpl
sınıftan türetiliyorsa, çağrının kapsamını ilgilendiğiniz belirli bir temel sınıfla karşılayarak bu yönteme yapılan çağrıları kesinleştirmeniz gerekir.
DispEventAdvise
içinde belirtilen pdiid
olay kaynağıyla kurulan bağlantıyı keser.
IDispEventSimpleImpl::GetIDsOfNames
bu uygulaması IDispatch::GetIDsOfNames
E_NOTIMPL döndürür.
STDMETHOD(GetIDsOfNames)(
REFIID /* riid */,
LPOLESTR* /* rgszNames */,
UINT /* cNames */,
LCID /* lcid */,
DISPID* /* rgdispid */);
Açıklamalar
Bkz . Windows SDK'sında IDispatch::GetIDsOfNames .
IDispEventSimpleImpl::GetTypeInfo
bu uygulaması IDispatch::GetTypeInfo
E_NOTIMPL döndürür.
STDMETHOD(GetTypeInfo)(
UINT /* itinfo */,
LCID /* lcid */,
ITypeInfo** /* pptinfo */);
Açıklamalar
Bkz . Windows SDK'sında IDispatch::GetTypeInfo .
IDispEventSimpleImpl::GetTypeInfoCount
bu uygulaması IDispatch::GetTypeInfoCount
E_NOTIMPL döndürür.
STDMETHOD(GetTypeInfoCount)(UINT* /* pctinfo */);
Açıklamalar
Bkz . Windows SDK'sında IDispatch::GetTypeInfoCount .
IDispEventSimpleImpl::Invoke
Bu uygulaması, IDispatch::Invoke
olay havuzu eşlemesinde listelenen olay işleyicilerini çağırır.
STDMETHOD(Invoke)(
DISPID dispidMember,
REFIID /* riid */,
LCID lcid,
WORD /* wFlags */,
DISPPARMS* pdispparams,
VARIANT* pvarResult,
EXCEPINFO* /* pexcepinfo */,
UINT* /* puArgErr */);
Açıklamalar
Bkz. IDispatch::Invoke.
IDispEventSimpleImpl::Unadvise
pUnk tarafından temsil edilen olay kaynağıyla bağlantıyı keser.
HRESULT Unadvise(IUnknown* pUnk);
Parametreler
Punk
[in] Olay kaynağı nesnesinin IUnknown
arabirimine ilişkin bir işaretçi.
Dönüş Değeri
S_OK veya herhangi bir hata HRESULT değeri.
Açıklamalar
Bağlantı kesildikten sonra olaylar artık olay havuzu eşlemesinde listelenen işleyici işlevlerine yönlendirilmeyecek.
Not
Sınıfınız birden çok IDispEventSimpleImpl
sınıftan türetiliyorsa, çağrının kapsamını ilgilendiğiniz belirli bir temel sınıfla karşılayarak bu yönteme yapılan çağrıları kesinleştirmeniz gerekir.
Unadvise
içinde pdiid
belirtilen varsayılan olay kaynağıyla kurulan bağlantıyı keser.
Unavise
varsayılan olay kaynağıyla bağlantıyı keser, AtlGetObjectSourceInterface tarafından belirlenen nesnenin varsayılan olay kaynağının IID değerini alır.
Ayrıca bkz.
_ATL_FUNC_INFO Yapısı
IDispatchImpl Sınıfı
IDispEventImpl Sınıfı
SINK_ENTRY_INFO
Sınıfa Genel Bakış