Compartilhar via


Troca de dados de caixa de diálogo

Se você usar o mecanismo DDX, você definir os valores iniciais da caixa de diálogo variáveis de membro do objeto, geralmente em seu OnInitDialog manipulador ou o construtor de caixa de diálogo.Imediatamente antes da caixa de diálogo é exibida, mecanismo DDX da estrutura transfere os valores das variáveis de membro para controles na caixa de diálogo, onde eles aparecem quando a caixa de diálogo aparece em resposta a DoModal ou criar.A implementação padrão de OnInitDialog em CDialog chamadas de UpdateData função de membro da classe CWnd para inicializar os controles na caixa de diálogo.

O mesmo mecanismo transfere valores dos controles para as variáveis de membro quando o usuário clica no botão OK (ou sempre que você chamar o UpdateData função de membro com o argumento TRUE).O mecanismo de validação de dados de caixa de diálogo valida os itens de dados que você especificou as regras de validação.

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

Troca de dados de caixa de diálogo

Troca de dados do diálogo

UpdateDatafunciona em ambas as direções, conforme especificado pelo BOOL parâmetro passado para ele.Para executar o exchange, UpdateData configura uma CDataExchange objeto e chamadas de sua classe de caixa de diálogo Substituir de CDialogdo DoDataExchange função de membro.DoDataExchangeleva um argumento do tipo CDataExchange.O CDataExchange objeto passado para UpdateData representa o contexto do exchange, a definição de tais informações como a direção do exchange.

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

MFC fornece muitas funções DDX para tipos diferentes do exchange.A exemplo a seguir mostra um DoDataExchange no qual DDX duas funções e uma função DDV são chamados de substituição:

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

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

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

Consulte também

Conceitos

Caixa de diálogo dados Exchange e validação

Ciclo de vida de uma caixa de diálogo

Caixa de diálogo validação de dados