Especificando níveis de funcionalidade
Este artigo descreve como adicionar os seguintes níveis de funcionalidades ao seu CObject- classe derivada:
Informações da classe de tempo de execução
Suporte de criação dinâmico
Suporte de serialização
Para uma descrição geral da funcionalidade de CObject , consulte o artigo Com uma classe de CObject.
Para adicionar informações da classe de tempo de execução
Derivar a sua classe de CObject, conforme descrito no artigo de Com uma classe de CObject .
Use a macro de DECLARE_DYNAMIC em sua declaração de classe, como mostrado a seguir:
class CPerson : public CObject { DECLARE_DYNAMIC( CPerson ) // other declarations };
Use a macro de IMPLEMENT_DYNAMIC no arquivo de implementação) (.CPP da classe. Esta macro usa como argumentos o nome da classe e sua classe base, como segue:
IMPLEMENT_DYNAMIC( CPerson, CObject )
Dica
IMPLEMENT_DYNAMIC sempre colocado no arquivo de implementação .CPP () para a sua classe.A macro de IMPLEMENT_DYNAMIC deve ser avaliada apenas uma vez durante a compilação e não em virtude disso deve ser usado em um arquivo (da interface. H) que poderia ser incluído em mais de um arquivo.
Para adicionar suporte dinâmico de criação
Derivar a sua classe de CObject.
Use a macro de DECLARE_DYNCREATE na declaração da classe.
Define um construtor sem argumentos (um construtor padrão).
Use a macro de IMPLEMENT_DYNCREATE no arquivo de implementação da classe.
Para adicionar suporte de serialização
Derivar a sua classe de CObject.
Substitua a função de membro de Serialize .
Dica
Se você chamar Serialize diretamente, ou seja, você não quiser serializar o objeto através de um ponteiro polimórfica, omitir as etapas de 3 a 5.
Use a macro de DECLARE_SERIAL na declaração da classe.
Define um construtor sem argumentos (um construtor padrão).
Use a macro de IMPLEMENT_SERIAL no arquivo de implementação da classe.
Dica
Pontos “de” polimórfica um ponteiro para um objeto de uma classe chamada (A) ou um objeto de qualquer classe derivada da (digamos, B).Para serializar por meio de um ponteiro polimórfica, a estrutura deve determinar a classe de tempo de execução do objeto que está serializando (b), desde que pode ser um objeto de qualquer classe derivada de uma determinada classe base (a).
Para obter mais detalhes sobre como habilitar a serialização quando você deve derivar a sua classe de CObject, consulte os artigos Arquivos em MFC e Serialização.