这些陈述在C ++ / CX中意味着什么?

时间:2013-03-16 14:30:28

标签: 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 MainPage Constructor.
//Scenarios is the name of a ListBox

这两条线做了什么?

什么是MainPage::MainPage_SizeChangedMainPage::Scenarios_SelectionChanged? 我可以看到有两个具有此名称的函数,但是函数调用中没有()吗? 也为什么他们之前是&? 如果返回类型无效,它们如何用作参数?

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

1 个答案:

答案 0 :(得分:1)

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

没有(),因为它不是函数调用。执行该行时不会调用函数MainPage_SizeChanged,每次引发SizeChanged事件时都会执行该函数。并使用&,因为这是在C ++中创建函数指针的方式。

如果您使用=而不是+=,则代码将无法编译。您无法设置事件,您只能订阅(使用+=)并取消订阅(-=)。