使用できるMicrosoftVisualC ++に制限されている場合は、管理対象の世界__event
と非常によく似ています。event
最初に、メソッドの前にイベントを作成するメソッドを宣言します__event
。
__event void OnButtonClicked(...);
次に、メソッドを含むクラスを次のように装飾します。
[event_source(native)]
class MyEventGenerator
{
public:
__event void OnButtonClicked(const void* pSender, const void* pArguments);
};
イベントを発生させるには、関数を呼び出すだけです(__raise
キーワードの前に付けることはオプションですが、イベントを発生させるコードで明確になります)。単純なメソッド呼び出しであるため、クラスの外部からイベントを発生させることもできることに注意してください。
イベントの処理に使用するクラスは、次のように装飾する必要があります。
[event_receiver(native)]
class CMyEventReceiver
{
public:
void OnButtonClicked(const void* pSender, const void* pArguments);
};
イベントを添付するには、砂糖がないので、クラス+=
内に次のようなものを書く必要があります。CMyEventReceiver
__hook(&CMyEventGenerator::OnButtonClicked, pEventGenerator,
&CMyEventReceiver::OnButtonClicked);
__unhook
イベントハンドラーをデタッチするには、キーワードを使用する必要があることに注意してください。