如何在C ++中编写多播委托

时间:2012-06-05 13:18:25

标签: c++ mfc

我需要在单击按钮时一起调用几个按钮单击事件。 我怎么写呢?我可以在这里使用多播委托概念吗?

我的情景:

我有一个名为XYZ的按钮。单击此按钮后,我必须逐个调用我为应用程序的其他按钮编写的事件处理程序。

有人可以帮我解决这个问题吗? 我浏览了这个链接:http://www.codeproject.com/Articles/1077/Delegates-in-managed-C 但它对我不起作用:(

1 个答案:

答案 0 :(得分:0)

如果您限制使用Microsoft Visual C ++,则可以使用__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);
};

要附加一个事件,你没有+= sugar ,所以你必须在CMyEventReceiver类中写下这样的内容:

 __hook(&CMyEventGenerator::OnButtonClicked, pEventGenerator,
    &CMyEventReceiver::OnButtonClicked);

请注意,要分离事件处理程序,您必须使用__unhook关键字。