__hook
關聯事件處理常式方法。
long __hook(
&SourceClass::EventMethod,
source,
&ReceiverClass::HandlerMethod
[, receiver = this]
);
long __hook(
interface,
source
);
參數
**&**SourceClass::EventMethod
變數的指標,將連結至事件處理常式方法與事件方法:原生 C++ 的事件: SourceClass 是事件的來源類別以及 EventMethod 事件。
COM 事件: SourceClass 是事件來源介面和 EventMethod 是它的方法之一。
管理事件: SourceClass 是事件的來源類別以及 EventMethod 事件。
interface
正在連上的介面名稱receiver,只針對 COM 事件接收者的 layout_dependent 參數的 event_receiver 屬性是 ,則為 true。source
事件來源的執行個體變數的指標。 視程式碼type中所指定 event_receiver, 來源可以是下列其中一項:原生事件來源物件指標。
IUnknown為基礎的指標 (COM 來源)。
(適用於 managed 事件) 的受管理的物件指標。
**&**ReceiverClass::HandlerMethod
緩衝區的指標,會攔截到事件的事件處理常式方法。 這個處理常式會被指定為一種方法的類別或參考相同的。 如果您沒有指定類別名稱, __hook假設是,它會呼叫類別。原生 C++ 的事件: ReceiverClass 的事件接收器類別和HandlerMethod的處理常式。
COM 事件: ReceiverClass 的事件接收器介面和HandlerMethod屬於它的處理常式。
管理事件: ReceiverClass 的事件接收器類別和HandlerMethod的處理常式。
receiver(選擇性)
事件接收器類別的執行個體變數的指標。 如果您未指定收件者,則預設會接收器類別或結構的__hook呼叫。
使用方式
可用於任何函式的範圍,包括主要類別外部的事件接收器。
備註
使用內建的函式__hook在事件接收者關聯或連結的處理常式方法與事件的方法。 然後在來源引發指定的事件時,會呼叫指定的處理常式。 您可以連接至單一事件的數個處理常式,或將數個事件連結到單一的處理常式。
有兩種形式的__hook。 您可以使用第一個 (四個引數) 表單,在大部分的情況下,明確地說,裡面的 COM 事件接收者 layout_dependent 參數的 event_receiver 屬性是 ,則為 false。
在這種情況下您不需要將介面中的所有方法都連結之前引發的事件,在其中一個方法。 只會處理該事件的方法,就必須加以連結。 您可以使用第二個 (兩個引數) 形式的__hook只會對 COM 事件接收者的 layout_dependent**= true**。
__hook傳回一個 long 整數值。 非零的傳回值會指出錯誤發生 (managed 的事件擲回例外狀況)。
編譯器會檢查是否存在事件和事件簽章接納委派簽章。
COM 事件的__hook和**__unhook**可以稱為外部事件接收者。
除了使用__hook就是使用 + = 運算子。
在撰寫程式碼受管理的事件,在新語法中的資訊,請參閱事件 (Visual C++)。
注意事項 |
---|
樣板類別或結構不能包含事件。 |
範例
請參閱在原生 C++ 中處理事件和在 COM 中處理事件的範例。