Aracılığıyla paylaş


__Event

Bir olay bildirir.

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

Notlar

Anahtar sözcük __event yöntem bildiriminde, arabirim bildirimi veya veri üyesi bildiriminde uygulanır.Ancak kullanamazsınız __event iç içe geçmiş bir sınıf üyesi alabilmek için anahtar sözcük.

Olay kaynağı ve alıcının yerel C++, com veya yönetilen (.net Framework) olmanıza bağlı olarak, olaylar aşağıdaki yapıları kullanabilirsiniz:

Doğal C++

COM

Yönetilen (.net Framework)

Method

yöntemi

Arabirim

Veri üyesi

Use __hook işleyicisi yönteminin bir olay yöntemi ile ilişkilendirmek için bir olay alıcı içinde.Bir olayla oluşturduktan sonra Not __event anahtar sözcük, sonradan o olay API'lerin tüm çağrılan olay işleyicileri olayın çağrıldığında.

Bir __event yöntem bildiriminde; tanımı olamaz sıradan herhangi bir yöntem gibi bir olay yöntemi çağrılabilir şekilde bir tanım örtülü olarak, oluşturulur.

[!NOT]

Bir şablonu esas alan bir sınıf veya yapı birimi olaylarını içeremez.

Doğal olaylar

Doğal olaylar yöntemlerdir.Dönüş türü genellikle HRESULT veya void, ancak herhangi bir tamsayı türü olabilir de dahil olmak üzere bir enum.Olay ayrılmaz bir dönüş türü kullandığında, bir hata durumu olay işleyicisi diğer temsilcileri büyük/küçük harf artırılmasını olay üreticimi arayacağım sıfır dışında bir değere döndürdüğünde tanımlanır.

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

Bkz: Olay işleme yerel C++'ta için örnek kod.

com olayları

com arabirimleri olaylardır.Bir olay kaynağı arabirim yöntemi parametrelerini olmalıdır , parametreleri (ancak bu testlerden zorunlu değildir), çünkü bir dışarı parametresi çok noktaya yayın sırasında yararlı değildir.Kullanırsanız, düzey 1 uyarı veren bir dışarı parametresi.

Dönüş türü genellikle HRESULT veya void, ancak herhangi bir tamsayı türü olabilir de dahil olmak üzere enum.Olay ayrılmaz bir dönüş türü kullanır ve bir olay işleyicisi sıfır olmayan bir değer döndürür, büyük/küçük harf artırılmasını olayın diğer temsilcileri çağrıları iptal eder bir hata koşulu değil.Not derleyici otomatik olarak bir olay kaynağı arabirimi olarak işaretler bir kaynak üretilen IDL de.

__İnterface anahtar sözcüğünü sonra gerekli her zaman __event com olay kaynağı için.

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

Bkz: Olay işleme com, için örnek kod.

Yönetilen olayları

Yeni sözdizimi olayları kodlaması hakkında daha fazla bilgi için bkz: Olay (Visual C++).

Yönetilen veri üyeleri ya da yöntemleri olaylardır.Bir olayla birlikte kullanıldığında, bir temsilci dönüş türü uyumlu olması Ortak dil belirtimi.Olay işleyicisi dönüş türünün temsilci dönüş türüyle eşleşmesi gerekir.Temsilciler hakkında daha fazla bilgi için bkz: __delegate.Yönetilen olay veri üyesi ise, kendi türüne bir işaretçi bir temsilci olmanız gerekir.

NET Framework içinde bir yöntem gibi veri üyesi davranabilirsiniz (yani, Invoke kendi karşılık gelen temsilciye yöntemi).Yönetilen olay veri üyesi bildirmek için temsilci türü önceden gerekir.Buna karşılık, önceden tanımlanmamışsa, yönetilen olay yöntemi dolaylı olarak ilgili yönetilen temsilci tanımlar.Örneğin, bir olay değeri aþaðýdaki gibi bildirebilirsiniz OnClick olduu gibi bir olay olarak:

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

Örtülü olarak yönetilen bir olayı bildirirken belirtme ekleme ve kaldırma erişenleri olay işleyicileri eklendiğinde veya kaldırıldığında çağırılacak.(Raises) çağıran yöntemi de tanımlayabilirsiniz sınıfın dışından olayından.

Örnek: Doğal olaylar

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

Örnek: com olayları

// 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;
   }
};

Örnek: Yönetilen olayları

// 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);
};

Bir öznitelik için bir olay uygularken özniteliği üretilen yöntemleri ya da üretilen temsilcisinin Invoke yöntemi uygulayın belirtebilirsiniz.Varsayılan değer (event:) özniteliği olaya uygulamaktır.

// 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();
};

Ayrıca bkz.

Başvuru

C++ anahtar sözcükler

Olay işleme

OLAY_KAYNAĞI

event_receiver

__hook

__unhook

__raise