MFC覚え書き(概要〜CObject)

これは何?

どーにもこーにもお仕事に使っているC++になじめないので、苦手な部分、知らなかった部分を取りまとめてブログに書くシリーズです。
C++脱初心者を目指す人レベルと思ってます。
ちなみに環境は、主にVisual C++ 2005 Express EditionとVisual C++ 2005です。


と、言うわけで2回目はお仕事で使い始めたMFCについて。

目標

MFCだけだと漠然としすぎているので、CDialogまでの各スーパークラスを読み解いていきたいと思います。


今回はMFCの概要とCObjectを読み解きます。

概要

Microsoft Foundation Class (MFC)は、マイクロソフトがVisual C++用に開発した、Windows用のアプリケーション構築のためのアプリケーションフレームワーク(クラスライブラリ)である。

via Microsoft Foundation Class - Wikipedia

MFCの階層

MFCのすべてのクラスは、CObjectを継承している。

CObjectの特徴

CObjectのリファレンス:CObject クラス (MFC)


ちなみに単に継承しても上記の恩恵は受けられず、ヘッダでのクラスの中でマクロ DECLARE_〜 を宣言、cpp側で、実装前にマクロ IMPLEMENT_〜 を宣言する必要がある。


DECLARE、IMPLEMENTの種類は以下の通り。

       
マクロ名 DECLARE_DYNAMIC
IMPLEMENT_DYNAMIC
DECLARE_DYNCREATE
IMPLEMENT_DYNCREATE
DECLARE_SERIAL
IMPLEMENT_SERIAL
対応機能 IsKindOf IsKindOf
動的生成(CreateObject)
IsKindOf
動的生成(CreateObject)
シリアライズ

クラスの動的生成について

リファレンス:CRuntimeClass::CreateObject (MFC)


動的生成したいクラスのランタイムクラスのみを生成して、そこから必要に応じてCRuntimeClass::CreateObjectにて、インスタンスを生成できる。


たとえばこの質問→多数のクラスの中から必要なクラスだけインスタンス化し管理する方法 みたいに、配列でクラスを管理して必要に応じてnewしたいけど、インスタンスを直接持ってるとメモリを食ってしまうし、いちいちnewするメソッドを作るのも面倒な時にとか便利。


とりあえず、今日はここまで。