2013-03-16 61 views
0

這些語句這些語句在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? 有兩個函數,我可以看到這個名字,但是在函數調用中沒有()? 此外,爲什麼他們前面&? 如果它們的返回類型是無效的,它們又如何被用作參數?

在兩行,爲什麼+ =使用,並且不僅=?如果使用=會發生什麼?

+0

對於自己喜歡的C++的書'&',查找「成員函數指針」。對於'+ ='查找[Events](http://msdn.microsoft.com/en-us/library/windows/apps/hh755799.aspx)。 – 2013-03-16 15:33:12

回答

1

這些行正在訂閱事件。例如,SizeChanged是一個事件,SizeChangedEventHandler是委託類型(類似於函數指針,但也包含參照類實例)和MainPage_SizeChanged是事件處理程序。

沒有(),因爲它不是函數調用。執行該行時不會調用MainPage_SizeChanged函數,每次引發SizeChanged事件時都會執行該函數。並且使用了&,因爲這就是在C++中如何創建函數指針。

如果使用=代替+=,您的代碼將無法編譯。你不能設置一個事件,你只能訂閱(使用+=),並從中(-=)取消。