Not
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
"function" : måste vara ett COM-gränssnitt för att utlösa COM-händelser
Anmärkningar
Händelsegränssnittet som du använder för att utlösa COM-händelser måste vara ett COM-gränssnitt. I det här fallet bör gränssnittet antingen definieras med hjälp av ett Visual C++-attribut eller importeras med #import från ett typbibliotek med #import embedded_idl attribut.
Observera att raderna #include i ATL-huvudfilerna som visas i exemplet nedan krävs för att använda COM-händelser. Åtgärda det här felet genom att göra IEvents (händelsegränssnittet) till ett COM-gränssnitt genom att tillämpa något av följande attribut på gränssnittsdefinitionen: objekt, dubbel eller dispinterface.
Om ett gränssnitt kommer från en rubrikfil som genererats av MIDL kommer kompilatorn inte att känna igen det som ett COM-gränssnitt.
Example
I följande exempel genereras C3706:
// C3706.cpp
// compile with: /c
// C3706 expected
#define _ATL_ATTRIBUTES 1
#include <atlbase.h>
#include <atlcom.h>
#include <atlctl.h>
[module(dll, name="idid", uuid="12341234-1234-1234-1234-123412341234")];
// Uncomment the following line to resolve.
// [object, uuid="12341234-1234-1234-1234-123412341237"]
__interface IEvents : IUnknown {
HRESULT event1(/*[in]*/ int i); // uncomment [in]
};
[dual, uuid="12341234-1234-1234-1234-123412341235"]
__interface IBase {
HRESULT fireEvents();
};
[coclass, event_source(com), uuid="12341234-1234-1234-1234-123412341236"]
class CEventSrc : public IBase {
public:
__event __interface IEvents;
HRESULT fireEvents() {
HRESULT hr = IEvents_event1(123);
return hr;
}
};