Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/127.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何在C++;_C++_Mfc - Fatal编程技术网

C++ 如何在C++;

C++ 如何在C++;,c++,mfc,C++,Mfc,我需要调用几个按钮点击事件一起在一个单一的按钮点击。 我该怎么写呢?我可以在这里使用多播代理概念吗 我的设想: 我有一个叫XYZ的按钮。单击此按钮后,必须逐个调用我为应用程序的其他按钮编写的事件处理程序 有人能帮我吗? 我浏览了这个链接: 但它对我来说没有用:(< P>)如果你只限于微软Visual C++,你可以使用它,它与托管世界非常类似。 首先声明要将事件前置到方法的方法: __event void OnButtonClicked(...); 然后用以下内容装饰包含该方法的类: [eve

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

我的设想:

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

有人能帮我吗?
我浏览了这个链接: 但它对我来说没有用:(

< P>)如果你只限于微软Visual C++,你可以使用它,它与托管世界非常类似。 首先声明要将事件前置到方法的方法:

__event void OnButtonClicked(...);
然后用以下内容装饰包含该方法的类:

[event_source(native)]
class MyEventGenerator
{
public:
    __event void OnButtonClicked(const void* pSender, const void* pArguments);
};
要引发事件,只需调用函数(在
\uu raise
关键字前面加上前缀是可选的,但它会在代码中明确表示您要引发事件)。请注意,您甚至可以从类外部引发事件,因为这是一个简单的方法调用

用于处理事件的类必须修饰为:

[event_receiver(native)]
class CMyEventReceiver
{
public:
    void OnButtonClicked(const void* pSender, const void* pArguments);
};
要附加事件,您没有
+=
的权限,因此必须在
CMyEventReceiver
类中编写类似的内容:

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

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

查看我的答案:我尝试过这样做,但当我执行应用程序时,单击按钮时,我面临一个错误,该错误表示“遇到了无效参数”我也无法理解事件源和事件接收器类。在我的场景中,接收器和源都是同一个类。希望我的查询清楚。抱歉,如果我混淆了你,如果需要,你可以在同一个类上使用它们(我想你有相同的类,但不同的对象!!!)。如果您确实对它感到不舒服,您可以简单地使用成员函数指针的std::vector(如果所有内容都在类中…)或(如果boost是一个选项)boost::function的std::vector。如果您有…时间,请阅读这篇文章:,它非常非常好(它的委托实现可能适合您的需要)。