Spécifier les niveaux de fonctionnalité
Cet article explique comment ajouter des niveaux suivants de la fonctionnalité à votre CObjectclasse dérivée de :
Les informations sur la classe à l'exécution
Prise en charge dynamique de création
Prise en charge de la sérialisation
Pour une description générale de la fonctionnalité d' CObject , consultez l'article dérivation d'une classe de CObject.
Pour ajouter des informations sur la classe à l'exécution
Dérivez votre classe d' CObject, comme décrit dans l'article de dérivation d'une classe de CObject .
Utilisez la macro d' DECLARE_DYNAMIC dans votre déclaration de classe, comme indiqué ci-après :
class CPerson : public CObject { DECLARE_DYNAMIC( CPerson ) // other declarations };
Utilisez la macro d' IMPLEMENT_DYNAMIC dans le fichier d'implémentation (.CPP) de votre classe.Prises de cette macro comme arguments le nom de la classe et sa classe de base, comme suit :
IMPLEMENT_DYNAMIC( CPerson, CObject )
[!REMARQUE]
Mettez toujours IMPLEMENT_DYNAMIC dans le fichier d'implémentation (.CPP) de votre classe.La macro d' IMPLEMENT_DYNAMIC doit être évaluée une seule fois pendant une compilation et ne doivent donc pas être utilisée dans un fichier d'interface (. H) qui pourrait être inclus dans plusieurs fichiers.
Pour ajouter la prise en charge dynamique de création
Dérivez votre classe d' CObject.
Utilisez la macro d' DECLARE_DYNCREATE dans la déclaration de classe.
Définissez un constructeur sans argument (un constructeur par défaut).
Utilisez la macro d' IMPLEMENT_DYNCREATE dans le fichier d'implémentation de classe.
Pour ajouter la prise en charge de la sérialisation
Dérivez votre classe d' CObject.
Substituez la fonction membre d' Serialize .
[!REMARQUE]
Si vous appelez Serialize directement, c. autrement dit., vous ne souhaitez pas la sérialisation de l'objet par l'intermédiaire d'un pointeur polymorphe, omettez les étapes 3 à 5.
Utilisez la macro d' DECLARE_SERIAL dans la déclaration de classe.
Définissez un constructeur sans argument (un constructeur par défaut).
Utilisez la macro d' IMPLEMENT_SERIAL dans le fichier d'implémentation de classe.
[!REMARQUE]
« Points d'un pointeur polymorphe » en objet d'une classe (appel il A) ou un objet de toute classe dérivée d'Un (supposons, B).Pour sérialiser par l'intermédiaire d'un pointeur polymorphe, l'infrastructure doit déterminer la classe d'exécution de l'objet qu'il sérialise (b), puisque ce peut être un objet de toute classe dérivée d'une classe de base ().
Pour plus d'informations sur l'activation de la sérialisation lorsque vous dérivez votre classe d' CObject, consultez les articles fichiers dans MFC et sérialisation.