jasmine214--love

          只有當(dāng)你的內(nèi)心總是充滿快樂、美好的愿望和寧靜時(shí),你才能擁有強(qiáng)壯的體魄和明朗、快樂或者寧靜的面容。
          posts - 731, comments - 60, trackbacks - 0, articles - 0

          C++  DDX(DoDataExchange..)控件和類成員的映射

          Posted on 2010-08-11 14:38 幻海藍(lán)夢 閱讀(1756) 評論(0)  編輯  收藏 所屬分類: C++

          原文:http://blog.csdn.net/danforn/archive/2008/04/18/2305356.aspx
          void CRegisterDialog::DoDataExchange(CDataExchange* pDX)

          ...{

          CDialog::DoDataExchange(pDX);

          //{{AFX_DATA_MAP(CRegisterDialog)

          DDX_Control(pDX, IDC_INCOME, m_ctrlIncome);

          DDX_LBString(pDX, IDC_INCOME, m_strIncome);

          DDX_CBString(pDX, IDC_KIND, m_strKind);

          DDX_Check(pDX, IDC_MARRIED, m_bMarried);

          DDX_Text(pDX, IDC_NAME, m_strName);

          DDX_Radio(pDX, IDC_SEX, m_nSex);

          DDX_Text(pDX, IDC_UNIT, m_strUnit);

          DDX_Radio(pDX, IDC_WORK, m_nWork);

          DDX_Text(pDX, IDC_AGE, m_nAge);

          DDV_MinMaxUInt(pDX, m_nAge, 16, 65);

          //}}AFX_DATA_MAP

          }

          可以看出,該函數(shù)中的代碼是由ClassWizard自動加入的。DoDataExchange只有一個(gè)參數(shù),即一個(gè)CDataExchange對象的指針pDX。在該函數(shù)中調(diào)用了DDX函數(shù)來完成數(shù)據(jù)交換,調(diào)用DDV函數(shù)來進(jìn)行數(shù)據(jù)有效檢查。

          當(dāng)程序需要交換數(shù)據(jù)時(shí),不要直接調(diào)用DoDataExchange函數(shù),而應(yīng)該調(diào)用CWnd::UpdateData。UpdataData函數(shù)內(nèi)部調(diào)用了DoDataExchange。該函數(shù)只有一個(gè)布爾型參數(shù),它決定了數(shù)據(jù)傳送的方向。調(diào)用UpdateData(TRUE)將數(shù)據(jù)從對話框的控件中傳送到對應(yīng)的數(shù)據(jù)成員中,調(diào)用UpdateData(FALSE)則將數(shù)據(jù)從數(shù)據(jù)成員中傳送給對應(yīng)的控件。

          在缺省的CDialog::OnInitDialog中調(diào)用了UpdateData(FALSE),這樣,在對話框創(chuàng)建時(shí),數(shù)據(jù)成員的初值就會反映到相應(yīng)的控件上。若用戶是按了OK(確定)按鈕退出對話框,則對話框認(rèn)為輸入有效,就會調(diào)用UpdataData(TRUE)將控件中的數(shù)據(jù)傳給數(shù)據(jù)成員。圖5.9描繪了對話框的這種數(shù)據(jù)交換機(jī)制。

           

           

          自定義DoDataExchange函數(shù)
          屬性頁DoDataExchange函數(shù)使程序員得以將屬性頁值與控件中的實(shí)際屬性值鏈接。若要建立鏈接,必須將適當(dāng)?shù)膶傩皂撟侄斡成涞剿鼈兏髯缘目丶傩浴?br /> 使用屬性頁DDP_函數(shù)實(shí)現(xiàn)這些映射。DDP_函數(shù)的運(yùn)行與標(biāo)準(zhǔn) MFC對話框中使用的 DDX_函數(shù)相似,但有一處例外。除對成員變量的引用外,DDP_函數(shù)還使用控件屬性的名稱。下面是屬性頁的DoDataExchange函數(shù)中的一個(gè)典型項(xiàng)。
          DDP_Text(pDX,IDC_CAPTION,m_caption,_T("Caption"));
          此函數(shù)使用DDP_Text函數(shù)將屬性頁的m_caption成員變量與Caption相關(guān)聯(lián)。
          插入屬性頁控件后,需要使用DDP_Text函數(shù)在屬性頁控件IDC_CAPTION與實(shí)際控件屬性Caption之間建立鏈接(如前所述)。
          其他對話框控件類型(如復(fù)選框、單選按鈕和列表框)也可以使用DDP函數(shù)。表6-4列出了完整的屬性頁DDP_函數(shù)集及各函數(shù)的作用。

          http://book.51cto.com/art/200708/54961.htm

          主站蜘蛛池模板: 延庆县| 讷河市| 东台市| 青阳县| 侯马市| 平安县| 灌阳县| 四平市| 滁州市| 阳江市| 自贡市| 榆中县| 尉犁县| 芮城县| 中超| 房产| 吉木萨尔县| 德昌县| 琼海市| 常宁市| 洮南市| 本溪市| 玛曲县| 咸宁市| 伊春市| 台东县| 盐亭县| 正镶白旗| 关岭| 夹江县| 东乌珠穆沁旗| 巍山| 仁怀市| 安泽县| 九龙坡区| 满城县| 佳木斯市| 唐河县| 六枝特区| 海兴县| 车险|