C++事宜處置中的__hook與__unhook用法詳解。本站提示廣大學習愛好者:(C++事宜處置中的__hook與__unhook用法詳解)文章只能為提供參考,不一定能成為您想要的結果。以下是C++事宜處置中的__hook與__unhook用法詳解正文
__hook
__hook將處置法式辦法與事宜聯系關系。
語法
long __hook( &SourceClass::EventMethod, source, &ReceiverClass::HandlerMethod [, receiver = this] ); long __hook( interface, source );參數
__unhook
撤消處置法式辦法與事宜的聯系關系。
語法
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
將從 receiver 中消除掛鉤的接口稱號,僅實用於 COM 事宜吸收器,個中 event_receiver 特征的 layout_dependent 參數為 true。
source
指向事宜源的實例的指針。依據 event_receiver 中指定的代碼 type,source 可為以下項之一:
本機事宜源對象指針。
基於 IUnknown 的指針(COM 源)。
托管對象指針(針對托管事宜)。
&ReceiverClass::HandlerMethod
指向要從事宜中消除掛鉤的事宜處置法式辦法的指針。處置法式將指定為類的辦法或對統一辦法的援用;假如不指定類稱號,則 __unhook 假定該類是從中挪用它的類。
本機 C++ 事宜:ReceiverClass 是事宜吸收器類,HandlerMethod 是處置法式。
COM 事宜:ReceiverClass 是事宜吸收器接口,HandlerMethod 是其處置法式之一。
托管事宜:ReceiverClass 是事宜吸收器類,HandlerMethod 是處置法式。
receiver(可選)
指向事宜吸收器類的實例的指針。假如不指定吸收器,則默許為在個中挪用 __unhook 的吸收器類或構造。
用法
可以在事宜吸收器類的內部的任何函數規模(包含 main)中應用。
備注
應用事宜吸收器中的外部函數 __unhook 撤消處置法式辦法與事宜辦法的聯系關系或從事宜辦法“消除掛鉤”處置法式辦法。
__unhook 有三種情勢。在年夜多半情形下,可使用第一種 (four-argument) 情勢。只能為 COM 事宜吸收器應用 __unhook 的第二種 (two-argument) 情勢;這將消除掛鉤全部事宜接口。可使用第三種 (one-argument) 情勢從指定的源中消除掛鉤一切拜托。
非零前往值指導已產生毛病(托管事宜將激發異常)。
假如對還沒有掛鉤的事宜和事宜處置法式挪用 __unhook,它將不起感化。
在編譯時,編譯器將驗證事宜能否存在,並應用指定的處置法式履行參數類型檢討。
除 COM 事宜外,可以在事宜吸收器的內部挪用 __hook 和 __unhook。
作為應用 __unhook 的替換方法,可使用 -= 運算符。
有關新語法中編碼托管事宜的信息,請參閱event(C++ 組件擴大)。
留意
模板類或構造不克不及包括事宜。