Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
"függvény" : COM-felületnek kell lennie a COM-események kilövéséhez
Megjegyzések
A COM-események létrehozásához használt eseményillesztőnek COM-felületnek kell lennie. Ebben az esetben az interfészt Visual C++ attribútummal kell definiálni, vagy #import #import embedded_idl attribútummal rendelkező típustárból importálni.
Vegye figyelembe, hogy az #include alábbi példában látható ATL-fejlécfájlok sorai szükségesek a COM-események használatához. A hiba megoldásához tegye IEvents-t (az eseménykezelő felületet) egy COM-felületté az alábbi attribútumok egyikének alkalmazásával az interfész definíciójára: objektum, kettős, vagy dispinterface.
Ha egy felület a MIDL által létrehozott fejlécfájlból származik, a fordító nem ismeri fel COM-felületként.
Example
A következő példa c3706-ot hoz létre:
// 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;
}
};