Compartilhar via


Classe CDataExchange

Dá suporte às rotinas de DDX (troca de dados de caixa de diálogo) e DDV (validação de dados de caixa de diálogo) usadas pelas classes do Microsoft Foundation.

Sintaxe

class CDataExchange

Membros

Construtores públicos

Nome Descrição
CDataExchange::CDataExchange Constrói um objeto CDataExchange.

Métodos públicos

Nome Descrição
CDataExchange::Fail Chamado quando a validação falha. Redefine o foco para o controle anterior e gera uma exceção.
CDataExchange::PrepareCtrl Prepara o controle especificado para troca ou validação de dados. Use para controles que não sejam de edição.
CDataExchange::PrepareEditCtrl Prepara o controle de edição especificado para troca ou validação de dados.
CDataExchange::PrepareOleCtrl Prepara o controle OLE especificado para troca ou validação de dados. Use para controles que não sejam de edição.

Membros de Dados Públicos

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

Comentários

CDataExchange não tem uma classe base.

Use essa classe se você estiver escrevendo rotinas de troca de dados para tipos de dados ou controles personalizados ou se estiver escrevendo suas próprias rotinas de validação de dados. Para obter mais informações sobre como escrever suas próprias rotinas de DDX e DDV, consulte a Nota Técnica 26. Para obter uma visão geral de DDX e DDV, consulte Troca e validação de dados de caixa de diálogo e Caixas de diálogo.

Um objeto CDataExchange fornece as informações de contexto necessárias para que DDX e DDV ocorram. O sinalizador m_bSaveAndValidate é FALSE quando a DDX é usada para preencher os valores iniciais de controles de caixa de diálogo de membros de dados. O sinalizador m_bSaveAndValidate é TRUE quando a DDX é usada para definir os valores atuais dos controles de caixa de diálogo em membros de dados e quando a DDV é usada para validar os valores de dados. Se a validação de DDV falhar, o procedimento DDV exibirá uma caixa de mensagem explicando o erro de entrada. Em seguida, o procedimento DDV chamará Fail para redefinir o foco para o controle incorreto e lançará uma exceção para interromper o processo de validação.

Hierarquia de herança

CDataExchange

Requisitos

Cabeçalho: afxwin.h

CDataExchange::CDataExchange

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

CDataExchange(
    CWnd* pDlgWnd,
    BOOL bSaveAndValidate);

Parâmetros

pDlgWnd
Um ponteiro para a janela pai que contém o controle. Normalmente, esse é um objeto derivado do CDialog.

bSaveAndValidate
Se TRUE, esse objeto valida os dados e grava dados dos controles nos membros. Se FALSE, esse objeto moverá dados de membros para controles.

Comentários

Construa você mesmo um objeto CDataExchange para armazenar informações extras no objeto de troca de dados para passar para a função membro CWnd::DoDataExchange da janela.

Exemplo

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

A estrutura chama essa função membro quando uma operação de DDV (validação de dados de caixa de diálogo) falha.

void Fail();

Comentários

Fail restaura o foco e a seleção para o controle cuja validação falhou (se houver um controle a ser restaurado). Em seguida, Fail gera uma exceção do tipo CUserException para interromper o processo de validação. A exceção faz com que uma caixa de mensagem explicando o erro seja exibida. Depois que a validação de DDV falhar, o usuário poderá reinserir dados no controle incorreto.

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

Para obter mais informações sobre como escrever suas próprias rotinas de DDX e DDV, consulte a Nota Técnica 26. Para obter uma visão geral da DDX e da DDV, consulte Troca e validação de dados da caixa de diálogo e Tópicos da caixa de diálogo.

CDataExchange::m_bSaveAndValidate

Esse sinalizador indica a direção de uma operação de troca de dados de caixa de diálogo (DDX).

BOOL m_bSaveAndValidate;

Comentários

O sinalizador será diferente de zero se o objeto CDataExchange estiver sendo usado para mover dados dos controles de caixa de diálogo para membros de dados da classe de diálogo após o usuário editar os controles. O sinalizador será zero se o objeto estiver sendo usado para inicializar controles de caixa de diálogo de membros de dados da classe de diálogo.

O sinalizador também será diferente de zero durante a DDV (validação de dados de caixa de diálogo).

Para obter mais informações sobre como escrever suas próprias rotinas de DDX e DDV, consulte a Nota Técnica 26. Para obter uma visão geral da DDX e da DDV, consulte Troca e validação de dados da caixa de diálogo e Tópicos da caixa de diálogo.

CDataExchange::m_pDlgWnd

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

CWnd* m_pDlgWnd;

Comentários

Esse objeto geralmente é um CDialog. Os implementadores de rotinas DDX ou DDV personalizadas podem usar esse ponteiro para obter acesso à janela de caixa de diálogo que contém os controles em que estão operando.

Para obter mais informações sobre como escrever suas próprias rotinas de DDX e DDV, consulte a Nota Técnica 26. Para obter uma visão geral da DDX e da DDV, consulte Troca e validação de dados da caixa de diálogo e Tópicos da caixa de diálogo.

CDataExchange::PrepareCtrl

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

HWND PrepareCtrl(int nIDC);

Parâmetros

nIDC
A ID do controle a ser preparada para DDX ou DDV.

Valor de retorno

O HWND do controle que está sendo preparado para DDX ou DDV.

Comentários

Use PrepareEditCtrl para editar controles; use essa função membro para todos os outros controles.

A preparação consiste em armazenar o HWND do controle na classe CDataExchange. A estrutura usa esse identificador para restaurar o foco para o controle que estava anteriormente em foco no caso de uma falha de DDX ou DDV.

Os implementadores de rotinas DDX ou DDV personalizadas devem chamar PrepareCtrl para todos os controles não editados para os quais estão trocando dados por meio de DDX ou validando dados por meio de DDV.

Para obter mais informações sobre como escrever suas próprias rotinas de DDX e DDV, consulte a Nota Técnica 26. Para obter uma visão geral da DDX e da DDV, consulte Troca e validação de dados da caixa de diálogo e Tópicos da caixa de diálogo.

CDataExchange::PrepareEditCtrl

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

HWND PrepareEditCtrl(int nIDC);

Parâmetros

nIDC
A ID do controle de edição a ser preparada para DDX ou DDV.

Valor de retorno

O HWND do controle de edição que está sendo preparado para DDX ou DDV.

Comentários

Use PrepareCtrl para todos os controles não editados.

A preparação consiste em duas coisas. Primeiro, PrepareEditCtrl armazena o HWND do controle na classe CDataExchange. A estrutura usa esse identificador para restaurar o foco para o controle que estava anteriormente em foco no caso de uma falha de DDX ou DDV. Depois, PrepareEditCtrl define um sinalizador na classe CDataExchange para indicar que o controle cujos dados estão sendo trocados ou validados é um controle de edição.

Os implementadores de rotinas DDX ou DDV personalizadas devem chamar PrepareEditCtrl para todos os controles de edição para os quais estão trocando dados por meio de DDX ou validando dados por meio de DDV.

Para obter mais informações sobre como escrever suas próprias rotinas de DDX e DDV, consulte a Nota Técnica 26. Para obter uma visão geral da DDX e da DDV, consulte Troca e validação de dados da caixa de diálogo e Tópicos da caixa de diálogo.

CDataExchange::PrepareOleCtrl

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

COleControlSite* PrepareOleCtrl(int nIDC);

Parâmetros

nIDC
A ID do controle OLE a ser preparada para DDX ou DDV.

Valor de retorno

Um ponteiro para o site do controle OLE.

Comentários

Use PrepareEditCtrl para editar controles ou PrepareCtrl para todos os outros controles que não sejam OLE.

Os implementadores de rotinas DDX ou DDV personalizadas devem chamar PrepareOleCtrl para todos os controles OLE para os quais estão trocando dados por meio de DDX ou validando dados por meio de DDV.

Para obter mais informações sobre como escrever suas próprias rotinas de DDX e DDV, consulte a Nota Técnica 26. Para obter uma visão geral da DDX e da DDV, consulte Troca e validação de dados da caixa de diálogo e Tópicos da caixa de diálogo.

Confira também

Exemplo de VIEWEX do MFC
Gráfico da hierarquia
CWnd::DoDataExchange
CWnd::UpdateData