程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> VC++中對話框數據交換【十全十美】

VC++中對話框數據交換【十全十美】

編輯:關於C語言

     如果使用 DDX 機制,則通常在 OnInitDialog 處理程序或對話框構造函數中設置對話框對象成員變量的初始值。在對話框即將顯示前,框架的 DDX 機制將成員變量的值傳輸給對話框中的控件,當對話框本身為響應 DoModal 或 Create 而出現時,這些值即出現在該對話框中。

CDialog 中 OnInitDialog 的默認實現調用 CWnd 類的 UpdateData 成員函數以初始化對話框中的控件。當用戶單擊“確定”按鈕或任何時候調用參數為 TRUE 的 UpdateData 成員函數)時,同樣是該機制將控件中的值傳輸到成員變量。對話框數據驗證機制將驗證您指定了驗證規則的任何數據項。          正如傳遞給它的 BOOL 參數所指定的那樣,UpdateData 進行雙向交換。為了執行交換,UpdateData 設置 CDataExchange 對象並調用對話框類對 CDialog 的 DoDataExchange 成員函數的重寫。DoDataExchange 采用 CDataExchange 類型的參數。傳遞給 UpdateData 的 CDataExchange 對象 表示交換的上下文,它定義交換方向等信息。當您或某個代碼向導)重寫 DoDataExchange 時,也就指定了對每一數據成員控件)的一個 DDX 函數的調用。UpdateData 傳遞給您的 DoDataExchange 一個 CDataExchange 參數,每個 DDX 函數都知道如何根據該參數所提供的上下文在兩個方向 交換數據。MFC 提供許多用於不同交換類型的 DDX 函數。下例顯示一個 DoDataExchange 重寫,其中調用了兩個 DDX 函數和一個 DDV 函數:   
  1. void CMyDialog::DoDataExchange(CDataExchange* pDX) 
  2.     CDialog::DoDataExchange(pDX);    // Call base class version 
  3.     DDX_Check(pDX, IDC_MY_CHECKBOX, m_bVar); 
  4.     DDX_Text(pDX, IDC_MY_TEXTBOX, m_strName); 
  5.     DDV_MaxChars(pDX, m_strName, 20); 
  6. DDX_ 行和 DDV_ 行是數據映射。顯示的示例 DDX 和 DDV 函數分別用於復選框 (CheckBox) 控件和編輯框控件。 如果用戶取消有模式對話框,則 OnCancel 成員函數終止該對話框,並且 DoModal 返回 IDCANCEL 值。在此情況下
  7. ,對話框和對話框對象之間不進行任何數據交換。

本文出自 “驿落黃昏” 博客,請務必保留此出處http://yiluohuanghun.blog.51cto.com/3407300/1097056

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved