Partilhar via


Troca de dados da caixa de diálogo

Se você usar o mecanismo de DDX, defina os valores iniciais de variáveis do membro do objeto da caixa de diálogo, normalmente no manipulador de OnInitDialog ou no construtor da caixa de diálogo. Imediatamente antes da caixa de diálogo for exibida, o mecanismo de DDX da estrutura transfere os valores de variáveis de membro nos controles na caixa de diálogo, onde aparecem quando a própria caixa de diálogo aparece em resposta a DoModal ou a Criar. A implementação padrão de OnInitDialog em CDialog chama a função de membro de UpdateData da classe CWnd para inicializar os controles na caixa de diálogo.

O mesmo mecanismo transfere valores dos controles para variáveis de membro quando o usuário clicar no botão OK (ou sempre que chama a função de membro de UpdateData com o argumento Verdadeiro). O mecanismo de validação de dados na caixa de diálogo valida todos os itens de dados para você especificar as regras de validação.

A figura a seguir ilustra a caixa de diálogo de troca de dados.

Caixa de diálogo de troca de dados

Troca de dados de caixa de diálogo

trabalho deUpdateData em ambas as direções, conforme especificado pelo parâmetro de BOOL transmitido a ele. Para realizar a troca, os conjuntos de UpdateData - acima de um objeto de CDataExchange e chama a substituição da sua classe da caixa de diálogo da função de membro de CDialogDoDataExchange . DoDataExchange usa um argumento do tipo CDataExchange. O objeto de CDataExchange passado a UpdateData representa o contexto de troca, definindo informações como a direção de troca.

Quando você (ou um assistente do código) substituem DoDataExchange, você especifica uma chamada a uma função de DDX pelo membro de dados (controle). Cada função de DDX sabe para trocar dados em ambas as direções com base no contexto fornecido pelo argumento de CDataExchange passado ao DoDataExchange por UpdateData.

MFC O fornece muitas funções de DDX para diferentes tipos de troca. O exemplo a seguir mostra uma substituição de DoDataExchange no qual duas funções de DDX e uma função de DDV são chamadas:

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);
}

As linhas de DDX_ e de DDV_ são um mapa de dados. O exemplo DDX e funções de DDV são mostradas para um controle da caixa de seleção e um controle da caixa de edição, respectivamente.

Se o usuário cancelar uma caixa de diálogo modal, a função de membro de OnCancel finaliza a caixa de diálogo e DoModal retorna o valor IDCANCEL. Nesse caso, os dados não são trocados entre a caixa de diálogo e o objeto da caixa de diálogo.

Consulte também

Conceitos

Troca de dados da caixa de diálogo e validação

Ciclo de vida de uma caixa de diálogo

Validação dos dados da caixa de diálogo