Windows runtime 这些语句在C++/CX?

Windows runtime 这些语句在C++/CX?,windows-runtime,c++-cx,Windows Runtime,C++ Cx,这些是声明 this->SizeChanged += ref new SizeChangedEventHandler(this, &MainPage::MainPage_SizeChanged); Scenarios->SelectionChanged += ref new SelectionChangedEventHandler(this, &MainPage::Scenarios_SelectionChanged); //These lines were in

这些是声明

this->SizeChanged += ref new SizeChangedEventHandler(this, &MainPage::MainPage_SizeChanged);

Scenarios->SelectionChanged += ref new SelectionChangedEventHandler(this, &MainPage::Scenarios_SelectionChanged);

//These lines were in MainPage Constructor.
//Scenarios is the name of a ListBox
这两条线是干什么的

什么是
MainPage::MainPage\u大小已更改
MainPage::Scenarios\u selection已更改
? 我可以看到两个同名函数,但函数调用中为什么没有
()
? 还有为什么它们前面有&? 如果它们的返回类型为void,如何将它们用作参数


在这两行中,为什么使用+=而不仅仅是=?如果使用=会发生什么情况?

这些行正在订阅事件。例如,
SizeChanged
是一个事件,
SizeChangedEventHandler
是一个委托类型(类似于函数指针,但也包含对类实例的引用),而
MainPage\u SizeChanged
是一个事件处理程序

没有
()
,因为它不是函数调用。执行该行时不会调用函数
MainPage\u SizeChanged
,它将在每次引发
SizeChanged
事件时执行。使用<代码>和代码>,因为这是函数指针在C++中如何创建的。


如果您使用
=
而不是
+=
,您的代码将无法编译。你不能设置一个事件,你只能订阅(使用<代码> += <代码>)并从它中退订(<代码> -= <代码> > .< /p>对于<代码>和<代码>,在你最喜欢的C++书籍中查找“成员函数指针”。对于
+=
查找。