__unhook

Dissociates 從事件處理常式方法。

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

參數

  • **&**SourceClass::EventMethod
    變數的指標,從中再解除事件處理常式方法與事件方法:

    • 原生 C++ 的事件: SourceClass 是事件的來源類別以及 EventMethod 事件。

    • COM 事件: SourceClass 是事件來源介面和 EventMethod 是它的方法之一。

    • 管理事件: SourceClass 是事件的來源類別以及 EventMethod 事件。

  • interface
    正在從 unhooked 的介面名稱receiver,只針對 COM 事件接收者的 layout_dependent 參數的 event_receiver 屬性是 ,則為 true

  • source
    事件來源的執行個體變數的指標。視程式碼type中所指定 event_receiver來源可以是下列其中一項:

    • 原生事件來源物件指標。

    • IUnknown為基礎的指標 (COM 來源)。

    • (適用於 managed 事件) 的受管理的物件指標。

  • **&**ReceiverClass::HandlerMethod
    若要取消連結事件的事件處理常式方法的指標。這個處理常式會被指定為一種方法的類別或參考相同的。 如果您沒有指定類別名稱, __unhook假設是,它會呼叫類別。

    • 原生 C++ 的事件: ReceiverClass 的事件接收器類別和HandlerMethod的處理常式。

    • COM 事件: ReceiverClass 的事件接收器介面和HandlerMethod屬於它的處理常式。

    • 管理事件: ReceiverClass 的事件接收器類別和HandlerMethod的處理常式。

  • receiver(選擇性)
    事件接收器類別的執行個體變數的指標。如果您未指定收件者,則預設會接收器類別或結構的**__unhook**呼叫。

使用方式

可用於任何函式的範圍,包括主要類別外部的事件接收器。

備註

使用內建的函式**__unhook**在事件接收者脫離或 「 攔截 」 事件方法中的處理常式方法。

有三種形式的**__unhook**。在大多數情況下,您可以使用第一個 (四個引數) 的表單。您可以使用第二個 (兩個引數) 形式的**__unhook**只會對 COM 事件接收者 ; 這會解除鎖定整個事件介面。您可以使用第三個 (一個引數) 表單攔截所有的委派,從指定的來源。

非零的傳回值,指出發生錯誤 (受管理的事件將會擲回例外狀況)。

如果您呼叫**__unhook**上的事件和事件處理常式,並不已繫結,它會有任何作用。

在編譯時期,編譯器會驗證該事件存在,而且不會與指定的處理常式的參數型別檢查。

COM 事件的__hook和**__unhook**可以稱為外部事件接收者。

除了使用**__unhook**就是使用-= 運算子。

在撰寫程式碼受管理的事件,在新語法中的資訊,請參閱事件 (Visual C++)

注意事項注意事項

樣板類別或結構不能包含事件。

範例

請參閱在原生 C++ 中處理事件在 COM 中處理事件的範例。

請參閱

參考

C + + 關鍵字

event_source

event_receiver

__event

__hook

__raise