小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

DDX 和 DDV 例程

 牛人的尾巴 2017-01-08

DDX 和 DDV 例程

Visual Studio 2015
 

若要了解有關(guān) Visual Studio 2017 RC 的最新文檔,請(qǐng)參閱 Visual Studio 2017 RC 文檔。

System_CAPS_ICON_note.jpg 說明

以下技術(shù)說明在首次包括在聯(lián)機(jī)文檔中后未更新。 因此,某些過程和主題可能已過時(shí)或不正確。 要獲得最新信息,建議你在聯(lián)機(jī)文檔索引中搜索熱點(diǎn)話題。

此注釋說明對(duì)話框數(shù)據(jù)交換 (DDX) 和對(duì)話框數(shù)據(jù)驗(yàn)證 (DDV) 體系結(jié)構(gòu)。 還描述如何編寫 DDX_ 或 DDV_ 過程,以及如何擴(kuò)展類向?qū)в糜诶獭?/p>

所有的對(duì)話框數(shù)據(jù)函數(shù)完成與 C++ 代碼。 無特殊的資源或魔術(shù)宏。 機(jī)制的重點(diǎn)不是在每一對(duì)話框類重寫執(zhí)行對(duì)話框數(shù)據(jù)交換和驗(yàn)證的虛函數(shù)。 它始終被找到以此形式:

void CMyDialog::DoDataExchange(CDataExchange* pDX)  
{  
    CDialog::DoDataExchange(pDX);    // call base class  
  
    //{{AFX_DATA_MAP(CMyDialog)  
        <data_exchange_function_call>  
        <data_validation_function_call>  
    //}}AFX_DATA_MAP  
}  

特定格式 AFX 注釋允許 ClassWizard 定位和編輯此函數(shù)中的代碼。 代碼與兼容 ClassWizard 應(yīng)放置在特殊形式注釋。

在上面的示例中,<data_exchange_function_call> 窗體:

DDX_Custom(pDX, nIDC, field);  

并 <data_validation_function_call> 是可選的和形式:

DDV_Custom(pDX, field, ...);  

多個(gè) DDX_/DDV_對(duì)在每個(gè) DoDataExchange 可以包含函數(shù)。

為任何對(duì)話框數(shù)據(jù)交換 (DDE) 例程和對(duì)話框數(shù)據(jù)驗(yàn)證例程參見“列表 afxdd_.h”隨 MFC。

對(duì)話框數(shù)據(jù)是:在 CMyDialog 類的數(shù)據(jù)成員。 在類似的結(jié)構(gòu)或的任何未存儲(chǔ)。

盡管我們調(diào)用此數(shù)據(jù)“對(duì)話框”,所有功能可在派生自 CWnd 的任何類和沒有限制到對(duì)話框。

初始值數(shù)據(jù)中標(biāo)準(zhǔn) C++ 構(gòu)造函數(shù)設(shè)置,通常在具有 //{{AFX_DATA_INIT 和 //}}AFX_DATA_INIT 的注釋塊。

CWnd::UpdateData 是在調(diào)用來執(zhí)行初始化和錯(cuò)誤處理對(duì) DoDataExchange的操作。

可以隨時(shí)調(diào)用 CWnd::UpdateData 進(jìn)行數(shù)據(jù)交換和驗(yàn)證。 默認(rèn) UpdateData(真) 在默認(rèn) CDialog::OnOK 處理程序和 UpdateData。默認(rèn)調(diào)用CDialog::OnInitDialog(錯(cuò)誤) 調(diào)用。

DDV_ 例程應(yīng)緊跟該 字段的DDX_ 例程。

不需要了解下面即可使用對(duì)話框數(shù)據(jù)。 但是,了解這如何在后臺(tái)工作可幫助您編寫自己交換或驗(yàn)證過程。

DoDataExchange 成員函數(shù)非常類似 Serialize 成員函數(shù) (它獲取或設(shè)置與應(yīng)用/或窗體外部 (在本例在對(duì)話框的控件中的數(shù)據(jù)從運(yùn)行)/至在類的數(shù)據(jù)成員。 參數(shù) pDX 是執(zhí)行上下文數(shù)據(jù)交換和參數(shù)與 CArchive 類似于 CObject::Serialize。 pDX ( CDataExchange 對(duì)象)。具有方向標(biāo)記就像具有方向 CArchive 標(biāo)志:

  • 如果 !m_bSaveAndValidate,然后為控件狀態(tài)加載數(shù)據(jù)。

  • 如果 m_bSaveAndValidate,然后將從控件的數(shù)據(jù)狀態(tài)。

在設(shè)置 m_bSaveAndValidate 時(shí),只驗(yàn)證發(fā)生。 m_bSaveAndValidate 的值取決于 CWnd::UpdateData的 BOOL 參數(shù)。

有其他 CDataExchange 的三個(gè)成員:

  • m_pDlgWnd:包含控件的窗口 (通常對(duì)話框)。 這是為了避免全局函數(shù)。必須通過的 this”為每個(gè) DDX_ DDX/DDV 例程和 DDV_ 的調(diào)用方。

  • PrepareCtrl和 PrepareEditCtrl:控件用于一對(duì)話框數(shù)據(jù)交換準(zhǔn)備。 存儲(chǔ)的設(shè)置焦點(diǎn)該手柄,并且在驗(yàn)證失敗。 PrepareCtrl 為 nonedit 控件使用,而 PrepareEditCtrl 用于編輯控件。

  • 未通過:調(diào)用在引發(fā)通知用戶的消息之后。輸入錯(cuò)誤。 該例程將焦點(diǎn)還原到最后一控件 (從 PrepareCtrl/PrepareEditCtrl) 最后調(diào)用并引發(fā)異常。 該成員函數(shù)。從 DDX_ 和 DDV_ 例程調(diào)用。

有多種方法來擴(kuò)展默認(rèn) DDX/DDV 機(jī)制。 您可以:

  • 添加新數(shù)據(jù)類型。

    CTime  
    
    
  • 添加新的 DDX_ 交換過程 (???)。

    void PASCAL DDX_Time(CDataExchange* pDX, int nIDC, CTime& tm);  
    
    
  • 新添加的驗(yàn)證過程 DDV_ (???)。

    void PASCAL DDV_TimeFuture(CDataExchange* pDX, CTime tm, BOOL bFuture);  
    // make sure time is in the future or past  
    
    
  • 傳遞任意表達(dá)式來驗(yàn)證過程。

    DDV_MinMax(pDX, age, 0, m_maxAge);  
    
    
    System_CAPS_ICON_note.jpg 說明

    這樣任意表達(dá)式不受"編輯并 ClassWizard 不得將在特定格式注釋外 (// {AFX_DATA_MAP (CMyClass))。

具有 DoDialogExchange 成員函數(shù)包括條件或任何其他的有效 C++ 語句用交互進(jìn)行交換和驗(yàn)證函數(shù)調(diào)用。

//{{AFX_DATA_MAP(CMyClass)  
DDX_Check(pDX, IDC_SEX, m_bFemale);  
DDX_Text(pDX, IDC_EDIT1, m_age);  
//}}AFX_DATA_MAP  
if (m_bFemale)  
    DDV_MinMax(pDX, age, 0, m_maxFemaleAge);  
else  
    DDV_MinMax(pDX, age, 0, m_maxMaleAge);  

System_CAPS_ICON_note.jpg 說明

如上所述,此代碼不受 ClassWizard 編輯,只應(yīng)在特定格式注釋。

ClassWizard 可以集成支持的子集 DDX/DDV 自定義您自己 DDX_ 和 DDV_ 到例程 ClassWizard 用戶界面。 如果打算重新使用特殊 DDX 和 DDV 例程在項(xiàng)目或在多項(xiàng)目,這樣做只花費(fèi)有利的。

若要執(zhí)行此,特定輸入在 DDX.CLW (Visual C++ 版本存儲(chǔ)在 APSTUDIO.INI 的此信息) 或項(xiàng)目中 .CLW 文件。 特定輸入可以輸入在項(xiàng)目的 .CLW 文件的通用信息。] 部分或在 DDX.CLW 文件的節(jié) [ExtraDDX] \Program Files\Microsoft Visual Studio\Visual C ++\bin 目錄中。 如果不存在,您可能需要?jiǎng)?chuàng)建 DDX.CLW 文件。 如果您在某項(xiàng)目計(jì)劃只使用自定義 DDX_/DDV_例程中,將項(xiàng)添加到項(xiàng)目 .CLW 文件的 [通用信息] 部分。 如果您計(jì)劃對(duì)許多項(xiàng)目的例程,添加輸入到 DDX.CLW 的 [ExtraDDX] 部分。

這些輸入特定常規(guī)格式為:

ExtraDDXCount=n  

n 位置是數(shù)字 ExtraDDX?下面的行

ExtraDDX?=<keys>;<vb-keys>; <prompt>; <type>; <initValue>; <DDX_Proc>  
[;<DDV_Proc>; <prompt1>; <arg1>; [<prompt2>; <fmt2>]]  

位置?第 N 是 1 - 指示 DDX 輸入定義列表。

每個(gè)字段通過分隔“;”字符。 字段及其用途介紹。

<鍵>
= 指示單字符的列表的對(duì)話框此控制變量的類型。

13,E = 編輯

C# = 兩個(gè)狀態(tài)復(fù)選框

c = 三種狀態(tài)復(fù)選框

= R 首先單選按鈕組中

左 = nonsorted 列表框

= l 排序列表框

= M 組合框 (與編輯項(xiàng))

" = nonsorted 拉列表

n = 排序的下拉列表

對(duì)于通常 DDX 例程使用傳輸“控件的”屬性 = 1,如果插入 DDX 應(yīng)被添加到列表默認(rèn) (開頭是向尾)。

<VB 鍵>
此字段僅用于控件 (VBX 產(chǎn)品在 16 位 VBX 控件在 32 位產(chǎn)品不支持)

<提示>
中的字符串。屬性組合框 (不是引號(hào))

<type>
單個(gè)類型的標(biāo)識(shí)符可以發(fā)出在頭文件。 在上面的示例中,我們 DDX_Time 與這將設(shè)置為 CTime。

<VB 鍵>
不使用此版本,應(yīng)總是為空

<initValue>
初始值 - 0 或 null。 如果為空白,則初始化行寫入不在//{實(shí)現(xiàn)文件的 AFX_DATA_INIT 節(jié)。 為保證該具有構(gòu)造函數(shù)正確的初始值的 C++ 對(duì)象使用空白輸入 (如 CString,CTime,等等)。

<DDX_Proc>
DDX_ 過程的唯一標(biāo)識(shí)符。 C++ 函數(shù)名稱必須以“DDX_ 開頭,”,但不包括“DDX_”在 <DDX_Proc> 標(biāo)識(shí)符。 在上面的示例中,<DDX_Proc> 標(biāo)識(shí)符是時(shí)間。 當(dāng) ClassWizard 編寫函數(shù)調(diào)用。在中實(shí)現(xiàn)文件{AFX_DATA_MAP 節(jié),它附加此名稱為 DDX_,從而達(dá)到 DDX_Time。

<注釋>
注釋顯示在對(duì)話框使用此變量的 DDX。 放置希望此處的所有文本和通常提供描述 DDX/DDV 對(duì)執(zhí)行的操作)。

<DDV_Proc>
輸入的 DDV 部分是可選的。 不是所有的 DDX 例程具有相應(yīng)的 DDV 例程。 通常,是非常方便。包括階段驗(yàn)證作為轉(zhuǎn)發(fā)的組成部分。 這通常是這樣,因此 DDV 例程不需要任何參數(shù)時(shí),因?yàn)轭愊驅(qū)Р恢С?DDV 例程不帶任何參數(shù)。

<arg>
DDV_ 過程的唯一標(biāo)識(shí)符。 C++ 函數(shù)名稱必須以“DDV_”開頭,但不包括“DDX_”在 <DDX_Proc> 標(biāo)識(shí)符。

后跟 1 或 2 DDV args:

<promptX>
為位置的字符串在編輯項(xiàng)上 ( & 與快捷鍵)

<fmtX>
arg 類型的格式字符,一

= d int

= u 未簽名

= D 長(zhǎng)期 int (即)。

= U 長(zhǎng)時(shí)間未簽名 (即一)

f 為浮點(diǎn)數(shù)

雙重 F =

= 字符串。

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多