Udostępnij za pośrednictwem


klasy __Event

Deklaruje zdarzenia.

__event method-declarator;
__event __interface interface-specifier;
__event member-declarator;

Uwagi

Słowo kluczowe __event można stosować w deklaracji metody, deklaracji interfejsu lub deklaracji członka danych.Nie można jednak używać __event słowo kluczowe, aby kwalifikować się członkiem klasy zagnieżdżonych.

W zależności od tego, czy źródło zdarzenia i odbiornik są macierzystym C++, COM lub zarządzanych (.NET Framework) można użyć jako wydarzenia następujące konstrukcje:

Macierzystym C++

COM

Zarządzane (.NET Framework)

Metoda

Metoda

Interfejs

Członek danych

Użyj __hook w skojarzyć metody obsługi zdarzenia metoda odbiorcy zdarzeń.Należy zauważyć, że po utworzeniu zdarzenia z __event słowa kluczowego, następnie wprowadzony zdarzenia wszystkich zdarzeń będzie wywoływana po wywołaniu zdarzenia.

__event Deklaracja metody nie może mieć definicji; Definicja niejawnie jest generowany, tak jak gdyby wszystkie zwykłe metody można wywołać metody zdarzeń.

[!UWAGA]

Szablonu klasy lub struktury nie mogą zawierać zdarzenia.

Zdarzenia macierzystego

Zdarzenia macierzystym są metody.Typ zwracany jest zazwyczaj HRESULT lub void, ale mogą być dowolnego typu integralną łącznie z enum.Gdy zdarzenie używa integralną typ zwracany, warunek błędu jest definiowany podczas obsługi zdarzenia zwraca wartość niezerową, w którym będzie wywołać zdarzenie jest wywoływane w przypadku innych pełnomocników.

// Examples of native C++ events:
__event void OnDblClick();
__event HRESULT OnClick(int* b, char* s);

Zobacz Obsługi zdarzeń w języku macierzystym C++ przykładowy kod.

Zdarzenia COM

Zdarzenia COM są interfejsy.Parametry metody w interfejsie źródła zdarzeń powinny być w parametry (ale nie jest to bezwzględnie wymuszane), ponieważ się parametr nie jest przydatne, gdy multiemisji.Jeśli używasz zostanie wygenerowane ostrzeżenie poziomu 1 się parametru.

Typ zwracany jest zazwyczaj HRESULT lub void, ale mogą być dowolnego typu integralną łącznie z enum.Gdy zdarzenie używa integralną typ zwracany i obsługa zdarzeń zwraca wartość niezerową, jest warunek błędu, w którym zdarzenie jest wywoływane w przypadku przerywa wywołań do innych pełnomocników.Należy zauważyć, że kompilator automatycznie oznaczyć interfejsu źródła zdarzeń jako źródło w wygenerowanym IDL.

__Interface słowo kluczowe jest zawsze wymagane po __event źródła zdarzeń COM.

// Example of a COM event:
__event __interface IEvent1;

Zobacz Obsługi zdarzeń w modelu COM przykładowy kod.

Zarządzanej zdarzeń

Informacje dotyczące kodowania zdarzenia w nowej składni, zobacz Zdarzenie (Visual C++).

Zdarzenia zarządzane są członkami danych lub metod.Gdy używana z zdarzenia, zwracany typ delegata musi być zgodny ze Common Language Specification.Zwracany typ obsługi zdarzeń musi odpowiadać zwracany typ delegata.Więcej informacji o delegatów, zobacz __delegate.Jeśli zdarzenie zarządzanych do danych, jego typ musi być wskaźnik do pełnomocnika.

W.NET Framework można traktować członka danych, tak jakby sama metoda (czyli Invoke metody jego odpowiedniego delegata).Należy wstępnie zdefiniować typ delegata deklarowania członek danych zarządzanej zdarzeń.Natomiast metoda zarządzanej zdarzeń niejawnie definiuje odpowiedniego delegata zarządzanych, jeśli nie jest zdefiniowana.Na przykład, takie jak można zadeklarować wartość zdarzenia OnClick jako następujące zdarzenia:

// Examples of managed events:
__event ClickEventHandler* OnClick;  // data member as event
__event void OnClick(String* s);  // method as event

Podczas deklarowania niejawnie zarządzanej zdarzeń, można określić, dodawanie i usuwanie akcesory, które zostanie wywołany, gdy obsługa zdarzeń są dodawane lub usuwane.Można także zdefiniować metodę (przebicia) wywołuje zdarzenie z poza klasą.

Przykład: Zdarzenia macierzystego

// EventHandling_Native_Event.cpp
// compile with: /c
[event_source(native)]
class CSource {
public:
   __event void MyEvent(int nValue);
};

Przykład: Zdarzeń COM

// EventHandling_COM_Event.cpp
// compile with: /c
#define _ATL_ATTRIBUTES 1
#include <atlbase.h>
#include <atlcom.h>

[ module(dll, name="EventSource", uuid="6E46B59E-89C3-4c15-A6D8-B8A1CEC98830") ];

[ dual, uuid("00000000-0000-0000-0000-000000000002") ]
__interface IEventSource {
   [id(1)] HRESULT MyEvent();
};
 [ coclass, uuid("00000000-0000-0000-0000-000000000003"),  event_source(com) ]
class CSource : public IEventSource {
public:
   __event __interface IEventSource;
   HRESULT FireEvent() {
      __raise MyEvent();
      return S_OK;
   }
};

Przykład: Zarządzanej zdarzeń

// EventHandling_Managed_Event.cpp
// compile with: /clr:oldSyntax /c
using namespace System;
[event_source(managed)]
public __gc class CPSource {

public:
   __event void MyEvent(Int16 nValue);
};

W przypadku stosowania atrybutu do zdarzenia, można określić, że wygenerowany metody lub metody Invoke generowanych pełnomocnika, stosuje się atrybut.Domyślne (event:) stosuje się atrybut do zdarzenia.

// EventHandling_Managed_Event_2.cpp
// compile with: /clr:oldSyntax /c
using namespace System;
[attribute(All, AllowMultiple=true)]
public __gc class Attr {};

public __delegate void D();

public __gc class X {
public:
   [method:Attr] __event D* E;
   [returnvalue:Attr] __event void noE();
};

Zobacz też

Informacje

Słów kluczowych języka C++

Obsługa zdarzeń

źródło_zdarzenia

event_receiver

__hook

__unhook

__raise