Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
"function" : musi być interfejsem COM, aby uruchamiać zdarzenia COM
Uwagi
Interfejs zdarzenia używany do wyzwalania zdarzeń COM musi być interfejsem COM. W takiej sytuacji interfejs powinien być zdefiniowany przy użyciu atrybutu Visual C++ lub zaimportowany przy użyciu #import z biblioteki typów z atrybutem embedded_idl #import.
Należy pamiętać, że #include wiersze plików nagłówków ATL pokazanych w poniższym przykładzie są wymagane do korzystania ze zdarzeń COM. Aby naprawić ten błąd, wprowadź IEvents interfejs COM (interfejs zdarzeń), stosując jeden z następujących atrybutów do definicji interfejsu: object, dual lub dispinterface.
Jeśli interfejs pochodzi z pliku nagłówka wygenerowanego przez MIDL, kompilator nie rozpozna go jako interfejsu COM.
Example
Poniższy przykład generuje kod 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;
}
};