Partilhar via


Classe CDataExchange

Observação

A biblioteca Microsoft Foundation Classes (MFC) continua a ser suportada. No entanto, já não estamos a adicionar funcionalidades nem a atualizar a documentação.

Suporta as rotinas de troca de dados de diálogo (DDX) e validação de dados de diálogo (DDV) usadas pelas classes Microsoft Foundation.

Sintaxe

class CDataExchange

Membros

Construtores Públicos

Nome Description
CDataExchange::CDataExchange Constrói um CDataExchange objeto.

Métodos Públicos

Nome Description
CDataExchange::Fail Chamada quando a validação falha. Reinicia o foco no controlo anterior e lança uma exceção.
CDataExchange::P repareCtrl Prepara o controlo especificado para a troca ou validação de dados. Use para controlos que não sejam editados.
CDataExchange::P repareEditCtrl Prepara o controlo de edição especificado para troca ou validação de dados.
CDataExchange::P repareOleCtrl Prepara o controlo OLE especificado para troca ou validação de dados. Use para controlos que não sejam editados.

Membros de Dados Públicos

Nome Description
CDataExchange::m_bSaveAndValidate Bandeira para a direção do DDX e DDV.
CDataExchange::m_pDlgWnd A caixa de diálogo ou janela onde ocorre a troca de dados.

Observações

CDataExchange não tem uma classe base.

Use esta classe se estiver a escrever rotinas de troca de dados para tipos de dados personalizados ou controlos, ou se estiver a escrever as suas próprias rotinas de validação de dados. Para mais informações sobre como escrever as suas próprias rotinas DDX e DDV, consulte a Nota Técnica 26. Para uma visão geral de DDX e DDV, consulte Troca e Validação de Dados de Diálogo e Caixas de Diálogo.

Um CDataExchange objeto fornece a informação de contexto necessária para que o DDX e o DDV ocorram. A m_bSaveAndValidate de flag é FALSE quando DDX é usado para preencher os valores iniciais dos controlos de diálogo a partir dos membros dos dados. A m_bSaveAndValidate de flag é VERDADEIRA quando DDX é usado para definir os valores atuais dos controlos de diálogo em membros de dados e quando DDV é usado para validar os valores de dados. Se a validação do DDV falhar, o procedimento DDV mostrará uma caixa de mensagem explicando o erro de entrada. O procedimento DDV chama então Fail para reiniciar o foco do controlo infrator e lança uma exceção para interromper o processo de validação.

Hierarquia de herança

CDataExchange

Requerimentos

Cabeçalho: afxwin.h

CDataExchange::CDataExchange

Chame esta função membro para construir um CDataExchange objeto.

CDataExchange(
    CWnd* pDlgWnd,
    BOOL bSaveAndValidate);

Parâmetros

pDlgWnd
Um ponteiro para a janela pai que contém o controlo. Normalmente, trata-se de um objeto derivado do CDialog.

bSaveAndValidate
Se for TRUE, este objeto valida os dados e depois escreve os dados dos controlos para os membros. Se for FALSE, este objeto moverá dados dos membros para controlos.

Observações

Construa um CDataExchange objeto você próprio para armazenar informação extra no objeto de troca de dados para passar à função membro CWnd::D oDataExchange da sua janela.

Example

CYourDataExchange dx(this, FALSE);
try
{
   DoDataExchange(&dx);
}
catch (CUserException *pe)
{
   // some part of the exchange went wrong
   // but the user has already been notified
   pe->Delete();
}

CDataExchange::Fail

O framework chama esta função membro quando uma operação de validação de dados de diálogo (DDV) falha.

void Fail();

Observações

Fail restaura o foco e a seleção para o controlo cuja validação falhou (se houver um controlo a restaurar). Fail depois lança uma exceção do tipo CUserException para parar o processo de validação. A exceção faz com que uma caixa de mensagem que explica o erro seja exibida. Após a falha da validação DDV, o utilizador pode reintroduzir os dados no controlo problemático.

Os implementadores de rotinas DDV personalizadas podem chamar Fail as suas rotinas quando uma validação falha.

Para mais informações sobre como escrever as suas próprias rotinas DDX e DDV, consulte a Nota Técnica 26. Para uma visão geral de DDX e DDV, consulte Temas de Troca e Validação de Dados de Diálogo e Caixas de Diálogo.

CDataExchange::m_bSaveAndValidate

Esta bandeira indica a direção de uma operação de troca de dados de diálogo (DDX).

BOOL m_bSaveAndValidate;

Observações

A flag é diferente de zero se o CDataExchange objeto estiver a ser usado para mover dados dos controlos de diálogo para membros de dados de classe de diálogo após o utilizador editar os controlos. O flag é zero se o objeto estiver a ser usado para inicializar controlos de diálogo a partir de membros de dados da classe de diálogo.

A bandeira também não é nula durante a validação de dados de diálogo (DDV).

Para mais informações sobre como escrever as suas próprias rotinas DDX e DDV, consulte a Nota Técnica 26. Para uma visão geral de DDX e DDV, consulte Temas de Troca e Validação de Dados de Diálogo e Caixas de Diálogo.

CDataExchange::m_pDlgWnd

Contém um ponteiro para o objeto CWnd para o qual está a ocorrer a troca de dados de diálogo (DDX) ou validação (DDV).

CWnd* m_pDlgWnd;

Observações

Este objeto é geralmente um objeto CDialog . Implementadores de rotinas DDX ou DDV personalizadas podem usar este ponteiro para obter acesso à janela de diálogo que contém os controlos em que estão a operar.

Para mais informações sobre como escrever as suas próprias rotinas DDX e DDV, consulte a Nota Técnica 26. Para uma visão geral de DDX e DDV, consulte Temas de Troca e Validação de Dados de Diálogo e Caixas de Diálogo.

CDataExchange::P repareCtrl

A estrutura chama esta função membro para preparar o controlo especificado para troca de dados de diálogo (DDX) e validação (DDV).

HWND PrepareCtrl(int nIDC);

Parâmetros

nIDC
O ID do controlo a ser preparado para DDX ou DDV.

Valor de retorno

O HWND do controlo que está a ser preparado para DDX ou DDV.

Observações

Use PrepareEditCtrl para controlos de edição; Use esta função membro para todos os outros controlos.

A preparação consiste em armazenar o HWND do controlo na CDataExchange classe. O framework utiliza este handle para restaurar o foco ao controlo previamente focado no caso de falha DDX ou DDV.

Os implementadores de rotinas DDX ou DDV personalizadas devem exigir PrepareCtrl todos os controlos não editados para os quais estão a trocar dados via DDX ou a validar dados via DDV.

Para mais informações sobre como escrever as suas próprias rotinas DDX e DDV, consulte a Nota Técnica 26. Para uma visão geral de DDX e DDV, consulte Temas de Troca e Validação de Dados de Diálogo e Caixas de Diálogo.

CDataExchange::P repareEditCtrl

A estrutura chama esta função membro para preparar o controlo de edição especificado para troca de dados de diálogo (DDX) e validação (DDV).

HWND PrepareEditCtrl(int nIDC);

Parâmetros

nIDC
O ID do controlo de edição a preparar para DDX ou DDV.

Valor de retorno

O HWND do controlo de edição a ser preparado para DDX ou DDV.

Observações

Use o PrepareCtrl em vez disso para todos os controlos que não sejam edit.

A preparação consiste em duas coisas. Primeiro, PrepareEditCtrl armazena o HWND do controlo na CDataExchange classe. O framework utiliza este handle para restaurar o foco ao controlo previamente focado no caso de falha DDX ou DDV. Segundo, PrepareEditCtrl define um flag na CDataExchange classe para indicar que o controlo cujos dados estão a ser trocados ou validados é um controlo de edição.

Os implementadores de rotinas DDX ou DDV personalizadas devem exigir PrepareEditCtrl todos os controlos de edição para os quais estão a trocar dados via DDX ou a validar dados via DDV.

Para mais informações sobre como escrever as suas próprias rotinas DDX e DDV, consulte a Nota Técnica 26. Para uma visão geral de DDX e DDV, consulte Temas de Troca e Validação de Dados de Diálogo e Caixas de Diálogo.

CDataExchange::P repareOleCtrl

O framework chama esta função membro para preparar o controlo OLE especificado para troca de dados de diálogo (DDX) e validação (DDV).

COleControlSite* PrepareOleCtrl(int nIDC);

Parâmetros

nIDC
O ID do controlo OLE a preparar para DDX ou DDV.

Valor de retorno

Um apontador para o local de controlo OLE.

Observações

Use PrepareEditCtrl para controlos de edição ou PrepareCtrl para todos os outros controlos que não sejam OLE.

Os implementadores de rotinas DDX ou DDV personalizadas devem exigir PrepareOleCtrl todos os controlos OLE para os quais estão a trocar dados via DDX ou a validar dados via DDV.

Para mais informações sobre como escrever as suas próprias rotinas DDX e DDV, consulte a Nota Técnica 26. Para uma visão geral de DDX e DDV, consulte Temas de Troca e Validação de Dados de Diálogo e Caixas de Diálogo.

Consulte também

MFC Exemplo VIEWEX
Gráfico de Hierarquia
CWnd::D oDataExchange
CWnd::UpdateData