[zz]MFC - DoDataExchange
也就是說,在對話框構(gòu)造函數(shù)里面初始化一個變量,由框架傳遞給控件使用。
"按我的理解,dodataexchange函數(shù)其實是一項數(shù)據(jù)動態(tài)綁定技術(shù)。比如你在寫動態(tài)按扭過程中須對按鈕添加變量時,怎么添加?控件類已經(jīng)寫好了,其變量是已經(jīng)固定的。你要添加新的變量就要用到dodataexchange函數(shù)。
所以你要在對話框的構(gòu)造函數(shù)里面初始化一個變量,再用dodataexchange函數(shù)將它綁定到你的動態(tài)按扭中,比如:ddx_check(pdx, idc_check1, m_lesson1);這就是將m_lesson1(這是一個外部變量,其定義在對話框的構(gòu)造函數(shù)里)綁定到idc_check1中。
看下ddx_check函數(shù)原型:void afxapi ddx_check(cdataexchange* pdx, int nidc, int& value);可以看到m_lesson并不是真的添加到idc_check1控件里了,注意這是int& value,只是一個值引用而已。差不多的意思就是這個變量被框架傳遞給控件了。控件只負(fù)責(zé)使用此變量 ,而不負(fù)責(zé)改寫此變量。-.-
哈哈,寫到這里,我也終于明白msdn那句話的意思了,原來dodataexchange函數(shù)是被框架與控件用來交流數(shù)據(jù)的。而里面的ddx函數(shù)才是動態(tài)綁定技術(shù)。
值得注意的一點(diǎn)是:msdn后面附加了一句 never call this function directly. it is called by the updatedata member function. call updatedata to initialize a dialog box’s controls or retrieve data from a dialog box.就是說此函數(shù)永遠(yuǎn)不被直接調(diào)用,它只是呼叫updatedata函數(shù)時才會被調(diào)用。(因為每更新一次,它都需要重新綁定一次。是這樣子嗎?) "
引子:http://zhidao.baidu.com/question/89105522.html
所以你要在對話框的構(gòu)造函數(shù)里面初始化一個變量,再用dodataexchange函數(shù)將它綁定到你的動態(tài)按扭中,比如:ddx_check(pdx, idc_check1, m_lesson1);這就是將m_lesson1(這是一個外部變量,其定義在對話框的構(gòu)造函數(shù)里)綁定到idc_check1中。
看下ddx_check函數(shù)原型:void afxapi ddx_check(cdataexchange* pdx, int nidc, int& value);可以看到m_lesson并不是真的添加到idc_check1控件里了,注意這是int& value,只是一個值引用而已。差不多的意思就是這個變量被框架傳遞給控件了。控件只負(fù)責(zé)使用此變量 ,而不負(fù)責(zé)改寫此變量。-.-
哈哈,寫到這里,我也終于明白msdn那句話的意思了,原來dodataexchange函數(shù)是被框架與控件用來交流數(shù)據(jù)的。而里面的ddx函數(shù)才是動態(tài)綁定技術(shù)。
值得注意的一點(diǎn)是:msdn后面附加了一句 never call this function directly. it is called by the updatedata member function. call updatedata to initialize a dialog box’s controls or retrieve data from a dialog box.就是說此函數(shù)永遠(yuǎn)不被直接調(diào)用,它只是呼叫updatedata函數(shù)時才會被調(diào)用。(因為每更新一次,它都需要重新綁定一次。是這樣子嗎?) "
引子:http://zhidao.baidu.com/question/89105522.html
posted on 2009-10-22 23:43 小默 閱讀(996) 評論(0) 編輯 收藏 引用 所屬分類: Language

