VC.NET Natived Event

  • 13257
  • 0
  • 2011-12-23

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 時的錯誤代碼

 

Link