MFC 4.0 より前の MFC では、定義済みの Window クラスが多数提供されていました。これらの Window クラスは、技術上の問題により、既定では提供されないことになりました。この技術上の問題とは、1 つはバージョン管理上の問題であり複数の MFC バージョンを同一アドレス空間に読み込んだ場合に問題になります。もう 1 つの問題は、MFC アプリケーションと OLE コントロールの両方が MFC DLL を使う場合があるという点です。
次に、以前提供されていたこれらの WNDCLASS を使っているコードを移行させる方法について説明します。アプリケーションでは、これらのクラスの代わりに AfxRegisterWndClass を使い、該当するパラメータを指定してください。
次に、クラスとその属性を示します。
-
"AfxWnd" は、CWnd::Create で作成したすべての子ウィンドウに対して使います。
-
"AfxFrameOrView" は、スタンドアロンの CFrameWnd、CMDIChildWnd など、ビューおよびフレーム ウィンドウに対して使います。
-
"AfxMDIFrame" は、CMDIFrameWnd::Create で作成した MDI フレーム ウィンドウ、つまり親ウィンドウに対して使います。
-
"AfxControlBar" は、標準実装のコントロール バーに対して使います。
アプリケーションで AFX_IDI_STD_FRAME などのリソース ID のリソースを用意すると、MFC はこのリソースを使います。それ以外の場合は、既定のリソースを使います。アイコンの場合は標準のアプリケーション アイコンを使い、カーソルの場合は標準の矢印カーソルを使います。
単一文書型の MDI アプリケーションをサポートするアイコンは 2 つあります。メイン アプリケーション用のアイコンとアイコン化文書/MDI 子ウィンドウ用のアイコンです。各種のアイコンを使う複数文書型の場合は、さらに WNDCLASS を登録するか、CFrameWnd::LoadFrame 関数を使ってください。
CFrameWnd::LoadFrame は WNDCLASS を自動的に登録します。このとき "AfxFrameOrView" の標準属性を使いますが、アイコン ID は LoadFrame の第 1 パラメータのものを使います。
MDIFrameWnd の背景色およびカーソルの値は使いません。MDIFrameWnd のクライアント領域が "MDICLIENT" ウィンドウに完全に隠れるからです。"MDICLIENT" ウィンドウのサブクラス化はお勧めしません。できるだけ、標準の色とカーソル タイプを使ってください。