ここでは、以下の機能レベルを CObject の派生クラスに追加する方法について説明します。
ランタイム クラス情報
動的生成機能のサポートを追加するには
シリアル化のサポート
CObject の機能の概要については、「CObject からのクラスの派生」を参照してください。
ランタイム クラス情報を追加するには
「CObject からのクラスの派生」の手順で CObject からクラスを派生します。
クラスの宣言で、DECLARE_DYNAMIC マクロを使用します。次に例を示します。
class CPerson : public CObject { DECLARE_DYNAMIC( CPerson ) // other declarations };
新規クラスの実装ファイル (.CPP) で IMPLEMENT_DYNAMIC マクロを使用します。 このマクロでは、クラスとその基本クラスの名前を引数として使用します。
IMPLEMENT_DYNAMIC( CPerson, CObject )
注意
IMPLEMENT_DYNAMIC マクロは、必ず新規クラスの実装ファイル (.CPP) に記述します。 IMPLEMENT_DYNAMIC マクロがコンパイル中に 2 回以上評価されてはならないので、インターフェイス ファイル (.H) には記述しないでください。.H ファイルは、複数のファイルにインクルードされる可能性があります。
動的生成機能のサポートを追加するには
CObject の派生クラスを作成します。
クラスの宣言に、DECLARE_DYNCREATE マクロを追加します。
引数を持たないコンストラクター (既定のコンストラクター) を定義します。
クラスの実装ファイルに、IMPLEMENT_DYNCREATE マクロを追加します。
シリアル化機能のサポートを追加するには
CObject の派生クラスを作成します。
メンバー関数 Serialize をオーバーライドします。
注意
メンバー関数 Serialize を直接呼び出すとき、つまり、ポリモーフィック ポインターを使わずにオブジェクトをシリアル化するときは、手順 3 から 5 を省略します。
クラスの宣言に、DECLARE_SERIAL マクロを追加します。
引数を持たないコンストラクター (既定のコンストラクター) を定義します。
クラスの実装ファイルに、IMPLEMENT_SERIAL マクロを追加します。
注意
"ポリモーフィック ポインター" は、あるクラス (クラス A) のオブジェクト、またはその派生クラス (クラス B) のオブジェクトを指します。 ポリモーフィック ポインターを使ってシリアル化する場合は、シリアル化するオブジェクト (B) のランタイム クラスをフレームワークで判定する必要があります。このオブジェクトは基本クラス (A) からの派生クラスのオブジェクトの場合もあるからです。
CObject からの派生クラスでシリアル化する詳細手順については、「MFC のファイル」および「シリアル化」を参照してください。