__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 中處理事件的範例。