Aracılığıyla paylaş


__hook

Bir iþleyici yöntemi, bir olay ile ilişkilendirir.

long __hook(
   &SourceClass::EventMethod,
   source,
   &ReceiverClass::HandlerMethod
   [, receiver = this]
);
long __hook(
   interface,
   source
);

Parametreler

  • **&**SourceClass::oluşur
    Olay işleyicisi yöntemi kanca olay yöntemi için bir işaretçi:

    • Yerel C++ olaylar: SourceClass olay kaynağı sınıftır ve oluşur olayıdır.

    • com olayları: SourceClass olay kaynağı arabirimidir ve oluşur yöntemlerinden biridir.

    • Yönetilen olaylar: SourceClass olay kaynağı sınıftır ve oluşur olayıdır.

  • interface
    Arabirim adı için API'lerin receiver, yalnızca, com Olay alıcıları için layout_dependent parametresi event_receiver özniteliği doğru.

  • source
    Olay kaynağı örneği için bir işaretçi.Koduna bağlı type içinde belirtilen event_receiver, kaynak aşağıdakilerden biri olabilir:

    • Yerel olay kaynak nesne işaretçisi.

    • Bir IUnknown-işaretçi (com kaynak) dayalı.

    • Yönetilen nesne işaretçisi (için yönetilen olayları).

  • **&**ReceiverClass::HandlerMethod
    Bir olaya API'lerin için olay işleyicisi yöntemi için bir işaretçi.İşleyicisi, bir sınıf veya aynı başvuru yöntemi olarak belirtilir; Sınıf adı belirtmezseniz, __hook sınıfı içinde buna denir olarak varsayar.

    • Yerel C++ olaylar: ReceiverClass olay alıcı sınıftır ve HandlerMethod denetleyicisidir.

    • com olayları: ReceiverClass olay alıcı arabirim ve HandlerMethod kendi işleyicileri biridir.

    • Yönetilen olaylar: ReceiverClass olay alıcı sınıftır ve HandlerMethod denetleyicisidir.

  • receiver(isteğe bağlı)
    Olay alıcı sınıfının bir örneği için bir işaretçi.Bir alıcı belirtmezseniz, varsayılan alıcı sınıf veya yapı, iş __hook olarak adlandırılır.

Kullanım

Ana olay alıcı sınıfın dışından da dahil olmak üzere herhangi bir işlev kapsamı kullanımda olabilir.

Notlar

İçsel işlevini kullanın __hook ilişkilendir ya da takma adlı bir olay yöntemi ile bir iþleyici yöntemi için bir olay alıcı olarak.Belirtilen olay kaynağı harekete geçiren, belirtilen işleyiciye sonra çağrılır.Birkaç tek bir olay işleyicilerine kanca veya çeşitli olayları tek bir işleyici için kanca.

İki vardır __hook.Çoğu durumda, ilk (dört-bağımsız) form özellikle, com Olay alıcıları için kullanabileceğiniz layout_dependent parametresi event_receiver özniteliği yanlış.

Bu gibi durumlarda yöntemlerden birini kullanarak bir olayı tetikleme önce bir arabirimdeki tüm yöntemler kanca gerekmez; yalnızca olay işleme yöntemi API'lerin gerekiyor.İkinci (iki bağımsız) şeklinde kullanabilirsiniz __hook , com olay alıcı için yalnızca layout_dependent**= true**.

__hookbir long değeri döndürür.Sıfır olmayan bir dönüş değeri (yönetilen olayları throw istisna) bir hata oluştuğunu gösterir.

Derleyici bir olayın varlığını denetler ve olay imzası temsilci imza ile anlaşır.

com olayları, __hook ve __unhook olay alıcı dışında çağrılabilir.

Kullanmaya alternatif __hook += işlecini kullanmaktır.

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

[!NOT]

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

Örnek

Bkz: Olay işleme yerel C++ ' ve Olay işleme com örnekler için.

Ayrıca bkz.

Başvuru

C++ anahtar sözcükler

Olay işleme

OLAY_KAYNAĞI

event_receiver

__unhook

__raise