Article ID: 244204 - Last Review: September 30, 2005 - Revision: 3.0 BUG: An ATL event does not fire when the event is defined with an interface alias in Visual C++ 6.0This article was previously published under Q244204 On This PageSYMPTOMS
When using IDispEventImpl to sink events in an ATL container, the event does not fire and the IDispatch::Invoke call to fire the event returns S_OK. The event actually fails in the call to ITypeInfo2::GetFuncIndexOfMemId with an HRESULT of 0x8002802B within IDispEventSimpleImpl::Invoke.
CAUSE
A dispinterface may be defined by explicitly listing the set of supported methods and properties or by listing a single interface. Both methods are shown here. RESOLUTION
Define the event interface, that uses IDispEventImpl to sink events, by listing the individual properties and methods, or derive the sink object from IDispEventSimpleImpl instead of IDispEventImpl. For more information about how to use IDispEventSimpleImpl, click the following article number to view the article in the Microsoft Knowledge Base: 194179
(http://support.microsoft.com/kb/194179/
)
AtlEvnt.exe sample shows how to create ATL sinks by using the ATL IDispEventImpl and IDispEventSimpleImpl classes
STATUSMicrosoft has confirmed that this is a bug in the Microsoft products that are listed in the "Applies to" section. MORE INFORMATIONSteps to reproduce the behaviorThe following steps require modification to files provided by the ATLEvnt sample that is described in the following Microsoft Knowledge Base article:194179
(http://support.microsoft.com/kb/194179/
)
AtlEvnt.exe sample shows how to create ATL sinks by using the ATL IDispEventImpl and IDispEventSimpleImpl classes
| Article Translations
|
Back to the top
