Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
'functie': moet een COM-interface zijn om COM-gebeurtenissen te activeren
Opmerkingen
De gebeurtenisinterface die u gebruikt om COM-gebeurtenissen te activeren, moet een COM-interface zijn. In dit geval moet de interface worden gedefinieerd met behulp van een Visual C++-kenmerk of geïmporteerd met behulp van #import uit een typebibliotheek met #import embedded_idl kenmerk.
Houd er rekening mee dat de #include regels van de ATL-headerbestanden die in het onderstaande voorbeeld worden weergegeven, vereist zijn voor het gebruik van COM-gebeurtenissen. Als u deze fout wilt oplossen, maak IEvents (deze gebeurtenisinterface) een COM-interface door een van de volgende kenmerken toe te passen op de interfacedefinitie: object, dual of dispinterface.
Als een interface afkomstig is van een headerbestand dat door MIDL wordt gegenereerd, herkent de compiler deze niet als com-interface.
Example
In het volgende voorbeeld wordt C3706 gegenereerd:
// 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;
}
};