Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Se você usar o mecanismo DDX, definirá os valores iniciais das variáveis membros do objeto de diálogo, habitualmente no manipulador OnInitDialog ou no construtor do diálogo. Imediatamente antes da caixa de diálogo ser exibida, o mecanismo DDX da estrutura transfere os valores das variáveis membro para os controles na caixa de diálogo, onde eles aparecem quando a própria caixa de diálogo aparece em resposta a DoModal ou Create. A implementação padrão de OnInitDialog em CDialog chama a função membro UpdateData da classe CWnd para inicializar os controlos 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ê chama a UpdateData função de membro com o argumento TRUE). O mecanismo de validação de dados da caixa de diálogo valida todos os itens de dados para os quais você especificou regras de validação.
A figura a seguir ilustra a troca de dados do diálogo.
Troca de Dados por Diálogo
UpdateData funciona em ambas as direções, conforme especificado pelo parâmetro BOOL passado para ele. Para realizar a troca, UpdateData configura um objeto CDataExchange e chama a implementação do override da função membro do CDialog da sua classe de diálogo DoDataExchange.
DoDataExchange usa um argumento do tipo CDataExchange. O CDataExchange objeto passado para UpdateData representa o contexto da troca, definindo tais informações como a direção da troca.
Quando você (ou um assistente de código) substitui DoDataExchange, você especifica uma chamada para uma função DDX por membro de dados (controle). Cada função DDX sabe como trocar dados em ambas as direções com base no contexto fornecido pelo argumento passado para você CDataExchangeDoDataExchange por UpdateData.
MFC fornece muitas funções DDX para diferentes tipos de troca. O exemplo a seguir mostra uma DoDataExchange substituição na qual duas funções DDX e uma função 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 DDX_ linhas e DDV_ são um mapa de dados. As funções DDX e DDV de exemplo mostradas são para um controle de caixa de seleção e um controle de caixa de edição, respectivamente.
Se o usuário cancelar uma caixa de diálogo modal, a OnCancel função de membro encerrará a caixa de diálogo e DoModal retornará o valor IDCANCEL. Nesse caso, nenhum dado é trocado entre a caixa de diálogo e o objeto de diálogo.
Ver também
Intercâmbio de dados e validação de diálogo
Trabalhando com caixas de diálogo no MFC
Validação de dados da caixa de diálogo