Compartir a través de


Diálogo de intercambio de datos

Si utiliza el mecanismo de DDX, establezca los valores iniciales de las variables miembro del objeto de cuadro de diálogo, normalmente en el controlador de OnInitDialog o el constructor del diálogo.Inmediatamente antes de que se muestre el diálogo, el mecanismo de DDX de marco transfiere los valores de las variables miembros a los controles en el cuadro de diálogo, donde aparecen cuando el cuadro de diálogo propio aparece en respuesta a DoModal o a Create.La implementación predeterminada de OnInitDialog en CDialog llama a la función miembro de UpdateData de la clase CWnd para inicializar los controles en el cuadro de diálogo.

El mismo mecanismo transfiere los valores de los controles a las variables miembro cuando el usuario hace clic en el botón ACEPTAR (o siempre que llame a la función miembro de UpdateData con el argumento TRUE).El mecanismo de validación de datos de diálogo valida cualquier elemento de datos que especificó reglas de validación.

La ilustración siguiente muestra diálogo intercambio de datos.

Intercambio de datos de cuadro de diálogo

Intercambio de datos de cuadro de diálogo

UpdateData funciona en ambas direcciones, especificado por el parámetro de BOOL pasa a.Para realizar el intercambio, UpdateData coloca un objeto de CDataExchange y llama al reemplazo de la clase de diálogo de la función miembro de DoDataExchange de los entity_CODECDialog.DoDataExchange toma un argumento de CDataExchangeescrito.El objeto de CDataExchange pasado a UpdateData representa el contexto de intercambio, definir información como la dirección de intercambio.

Cuando se (o un asistente para código) reemplaza DoDataExchange, especifica una llamada a una función de DDX por el miembro de datos (control).Cada función de DDX conocidos para intercambiar los datos en ambas direcciones en función del contexto proporcionado por el argumento de CDataExchange pasado al DoDataExchange por UpdateData.

MFC proporciona muchas funciones DDX para los diferentes tipos de intercambio.El ejemplo siguiente se muestra una invalidación de DoDataExchange en la que se llama dos funciones DDX y una función de DDV:

void CTestDialog::DoDataExchange(CDataExchange* pDX)
{
   CDialog::DoDataExchange(pDX);
   DDX_Check(pDX, IDC_MY_CHECKBOX, m_bVal);
   DDX_Text(pDX, IDC_MY_TEXTBOX, m_strName);
   DDV_MaxChars(pDX, m_strName, 20);
}

Las líneas de DDX_ y de DDV_ son un mapa de datos.El ejemplo DDX y las funciones de DDV mostradas son para un control checkbox y un control de cuadro de edición, respectivamente.

Si el usuario cancela un cuadro de diálogo modal, la función miembro de OnCancel finaliza el cuadro de diálogo y DoModal devuelve el valor IDCANCEL.En ese caso, no se cambia ningún dato entre el cuadro de diálogo y el objeto de cuadro de diálogo.

Vea también

Conceptos

Diálogo Data Exchange y validación

Ciclo de vida de un cuadro de diálogo

Validación de datos de cuadro de diálogo