DDX 和 DDV 例程Visual Studio 2015 若要了解有关 Visual Studio 2017 RC 的最新文档,请参阅 Visual Studio 2017 RC 文档。
此注释说明对话框数据交换 (DDX) 和对话框数据验证 (DDV) 体系结构。 还描述如何编写 DDX_ 或 DDV_ 过程,以及如何扩展类向导用于例程。 所有的对话框数据函数完成与 C++ 代码。 无特殊的资源或魔术宏。 机制的重点不是在每一对话框类重写执行对话框数据交换和验证的虚函数。 它始终被找到以此形式: 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 定位和编辑此函数中的代码。 代码与兼容 ClassWizard 应放置在特殊形式注释。 在上面的示例中,<data_exchange_function_call> 窗体: DDX_Custom(pDX, nIDC, field); 并 <data_validation_function_call> 是可选的和形式: DDV_Custom(pDX, field, ...); 多个 DDX_/DDV_对在每个 为任何对话框数据交换 (DDE) 例程和对话框数据验证例程参见“列表 afxdd_.h”随 MFC。 对话框数据是:在 CMyDialog 类的数据成员。 在类似的结构或的任何未存储。 尽管我们调用此数据“对话框”,所有功能可在派生自 初始值数据中标准 C++ 构造函数设置,通常在具有
可以随时调用 DDV_ 例程应紧跟该 字段的DDX_ 例程。 不需要了解下面即可使用对话框数据。 但是,了解这如何在后台工作可帮助您编写自己交换或验证过程。
在设置 有其他
有多种方法来扩展默认 DDX/DDV 机制。 您可以:
具有 DoDialogExchange 成员函数包括条件或任何其他的有效 C++ 语句用交互进行交换和验证函数调用。 //{{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);
ClassWizard 可以集成支持的子集 DDX/DDV 自定义您自己 DDX_ 和 DDV_ 到例程 ClassWizard 用户界面。 如果打算重新使用特殊 DDX 和 DDV 例程在项目或在多项目,这样做只花费有利的。 若要执行此,特定输入在 DDX.CLW (Visual C++ 版本存储在 APSTUDIO.INI 的此信息) 或项目中 .CLW 文件。 特定输入可以输入在项目的 .CLW 文件的通用信息。] 部分或在 DDX.CLW 文件的节 [ExtraDDX] \Program Files\Microsoft Visual Studio\Visual C ++\bin 目录中。 如果不存在,您可能需要创建 DDX.CLW 文件。 如果您在某项目计划只使用自定义 DDX_/DDV_例程中,将项添加到项目 .CLW 文件的 [通用信息] 部分。 如果您计划对许多项目的例程,添加输入到 DDX.CLW 的 [ExtraDDX] 部分。 这些输入特定常规格式为: ExtraDDXCount=n n 位置是数字 ExtraDDX?下面的行 ExtraDDX?=<keys>;<vb-keys>; <prompt>; <type>; <initValue>; <DDX_Proc> [;<DDV_Proc>; <prompt1>; <arg1>; [<prompt2>; <fmt2>]] 位置?第 N 是 1 - 指示 DDX 输入定义列表。 每个字段通过分隔“;”字符。 字段及其用途介绍。 <键> 13,E = 编辑 C# = 两个状态复选框 c = 三种状态复选框 = R 首先单选按钮组中 左 = nonsorted 列表框 = l 排序列表框 = M 组合框 (与编辑项) " = nonsorted 拉列表 n = 排序的下拉列表 对于通常 DDX 例程使用传输“控件的”属性 = 1,如果插入 DDX 应被添加到列表默认 (开头是向尾)。 <VB 键> <提示> <type> <VB 键> <initValue> <DDX_Proc> <注释> <DDV_Proc> <arg> 后跟 1 或 2 DDV args: <promptX> <fmtX> = d int = u 未签名 = D 长期 int (即)。 = U 长时间未签名 (即一) f 为浮点数 双重 F = = 字符串。 |
|