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
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