Troca de dados de caixa de diálogo

Se você usa o mecanismo DDX, é só conjunto os valores iniciais da caixa de diálogo variáveis de membro do objeto, geralmente nas seu OnInitDialog manipulador ou o construtor de caixa de diálogo. Imediatamente antes que a caixa de diálogo é exibida, DDX mecanismo da estrutura transfere os valores das variáveis membro controles da caixa de diálogo, onde elas aparecem quando a caixa de diálogo própria aparece em resposta a DoModal ou Criar.A implementação padrão de OnInitDialog em CDialog chamadas a UpdateData função de membro de 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ê telefonar 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 para 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

UpdateData funciona em ambas sistema autônomo direções, conforme especificado pela BOOL parâmetro passado para ele.Para realizar a troca, UpdateData configura um CDataExchange objeto e chamadas de sua classe de caixa de diálogo Substituir de CDialog's DoDataExchange função de membro. DoDataExchange usa um argumento de tipo CDataExchange. The CDataExchange objeto passado para UpdateData representa o contexto de troca, definindo tais informações sistema autônomo a direção da troca.

Quando você (ou um Assistente de código) substituir DoDataExchange, especifique uma telefonar 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 de troca.O exemplo a seguir mostra um DoDataExchange em quais DDX duas funções e uma função DDV são chamados de substituir:

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

The DDX_ e DDV_ as linhas são um MAP de dados. As funções de amostra DDX e DDV mostradas são para um controle de 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 encerra 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 caixa 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