共用方式為


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

請參閱

參考

C + + 關鍵字

事件處理

event_source

event_receiver

__unhook

__raise