Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
The new home for Visual Studio documentation is Visual Studio 2017 Documentation on docs.microsoft.com.
The latest version of this topic can be found at Specifying Levels of Functionality.
This article describes how to add the following levels of functionality to your CObject-derived class:
- Run-time class information 
- Dynamic creation support 
- Serialization support 
For a general description of CObject functionality, see the article Deriving a Class from CObject.
To add run-time class information
- Derive your class from - CObject, as described in the Deriving a Class from CObject article.
- Use the - DECLARE_DYNAMICmacro in your class declaration, as shown here:- class CPerson : public CObject { DECLARE_DYNAMIC( CPerson ) // other declarations };
- Use the - IMPLEMENT_DYNAMICmacro in the implementation file (.CPP) of your class. This macro takes as arguments the name of the class and its base class, as follows:- IMPLEMENT_DYNAMIC( CPerson, CObject )
Note
Always put IMPLEMENT_DYNAMIC in the implementation file (.CPP) for your class. The IMPLEMENT_DYNAMIC macro should be evaluated only once during a compilation and therefore should not be used in an interface file (.H) that could potentially be included in more than one file.
To add dynamic creation support
- Derive your class from - CObject.
- Use the - DECLARE_DYNCREATEmacro in the class declaration.
- Define a constructor with no arguments (a default constructor). 
- Use the - IMPLEMENT_DYNCREATEmacro in the class implementation file.
To add serialization support
- Derive your class from - CObject.
- Override the - Serializemember function.- Note - If you call - Serializedirectly, that is, you do not want to serialize the object through a polymorphic pointer, omit steps 3 through 5.
- Use the - DECLARE_SERIALmacro in the class declaration.
- Define a constructor with no arguments (a default constructor). 
- Use the - IMPLEMENT_SERIALmacro in the class implementation file.
Note
A "polymorphic pointer" points to an object of a class (call it A) or to an object of any class derived from A (say, B). To serialize through a polymorphic pointer, the framework must determine the run-time class of the object it is serializing (B), since it might be an object of any class derived from some base class (A).
For more details on how to enable serialization when you derive your class from CObject, see the articles Files in MFC and Serialization.