Do I Have to Derive New Classes from CObject?
No, you don't.
Derive a class from CObject when you need the facilities it provides, such as serialization or dynamic creatability. Many data classes need to be serialized to files, so it's often a good idea to derive them from CObject. For an example of a class derived from CObject, see the Scribble sample.