Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
"Funktion" : muss eine COM-Schnittstelle sein, um COM-Ereignisse auszulöschen
Die Ereignisschnittstelle, die Sie zum Auslösen von COM-Ereignissen verwenden, muss eine COM-Schnittstelle sein. In diesem Fall sollte die Schnittstelle entweder mit einem Visual C++-Attribut definiert oder mithilfe von #import aus einer Typbibliothek mit dem embedded_idl-Attribut #import importiert werden.
Beachten Sie, dass die Zeilen der ATL-Headerdateien im folgenden Beispiel für die #include
Verwendung von COM-Ereignissen erforderlich sind. Um diesen Fehler zu beheben, erstellen IEvents
Sie (die Ereignisschnittstelle) eine COM-Schnittstelle, indem Sie eines der folgenden Attribute auf die Schnittstellendefinition anwenden: Objekt, dual oder dispinterface.
Wenn eine Schnittstelle aus einer von MIDL generierten Headerdatei stammt, erkennt der Compiler sie nicht als COM-Schnittstelle.
Im folgenden Beispiel wird C3706 generiert:
// 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;
}
};