VC.NET Natived類別事件處理
事件宣告
__event void EventName();
事件繫結
__hook(&事件來源類別::EventName,事件來源物件指標,&處理事件的類別::HandleMethod);
移除繫結
__unhook(&事件來源類別::EventName,事件來源物件指標,&處理事件的類別::HandleMethod);
事件觸發
__raise EventName();
範例
// TestNativedEvent.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
class TestObj
{
public:
__event void Executed();
protected:
void OnExecuted()
{
printf("Executed\n");
}
public:
void Execute()
{
__raise Executed();
}
void BindingEvent(){
__hook(&TestObj::Executed,this,&TestObj::OnExecuted);
}
void UnBindingEvent(){
__unhook(&TestObj::Executed,this,&TestObj::OnExecuted);
}
};
int _tmain(int argc, _TCHAR* argv[])
{
TestObj obj;
obj.BindingEvent();
obj.Execute ();
return 0;
}
注意事項
若在使用上出現AccessViolationException例外,可參閱 KB811193 - 注意: 您會收到 「 0xC0000005 「 原生的事件引發或 unhooked 時的錯誤代碼。