MDIで複数のビュー表示

通常、VCのアプリケーションウィザードでMDIアプリケーションを作成すると、子MDIウィンドウにあたるビューは1つしか作られない。
複数のビュー(1つはCEditViewで1つはCListView)を扱いたい場合は自力で何とかするしかない。
方法としては、CWinAppクラスの派生クラスのメンバ関数 InitInstance関数内、利用するビューを登録します。
ビューの登録には、CWinApp::AddDocTemplate関数を利用します。
AddDocTemplate関数は、利用可能なドキュメントテンプレートを追加します。
ドキュメントテンプレートは、MFCのドキュメント・ビューアーキテクチャで利用される機構で、ビューとドキュメント、フレームを管理します。
(間違ってはいないと思うんだけど、この説明に自信が無い)
MDIの場合、CMultiDocTemplateクラスを利用してドキュメントテンプレートを生成します。
複数のビューを登録する例
BOOL CxxxxApp::InitInstance(){
    AfxEnableControlContainer();
・・・省略・・・
    m_pDocRuntime = RUNTIME_CLASS(CResultDoc);

    // アプリケーション用のドキュメント テンプレートを登録します。ドキュメント テンプレート
    //  はドキュメント、フレーム ウィンドウとビューを結合するために機能します。
    m_pDocTemp1 = new CMultiDocTemplate(
        IDR_XXXXXXXX,
        m_pDocRuntime,
        RUNTIME_CLASS(CChildFrame),
        RUNTIME_CLASS(CxxxView));
    AddDocTemplate(m_pDocTemp1);

    m_pDocTemp2 = new CMultiDocTemplate(
        IDR_XXXXXXXX,
        m_pDocRuntime,
        RUNTIME_CLASS(CChildFrame),
        RUNTIME_CLASS(CxxxListView));
    AddDocTemplate(m_pDocTemp2);

    m_pDocTemp3 = new CMultiDocTemplate(
        IDR_XXXXXXXX,
        m_pDocRuntime,
        RUNTIME_CLASS(CChildFrame),
        RUNTIME_CLASS(CxxxView));
    AddDocTemplate(m_pDocTemp3);

    // メイン MDI フレーム ウィンドウを作成
    CMainFrame* pMainFrame = new CMainFrame;
    if (!pMainFrame->LoadFrame(IDR_MAINFRAME))
        return FALSE;
    m_pMainWnd = pMainFrame;

    // DDE、file open など標準のシェル コマンドのコマンドラインを解析します。
    CCommandLineInfo cmdInfo;
    ParseCommandLine(cmdInfo);

//  // コマンドラインでディスパッチ コマンドを指定します。
//  if (!ProcessShellCommand(cmdInfo))
//      return FALSE;

    // MDI子ウィンドウが開くのを抑止
    if( cmdInfo.m_nShellCommand == CCommandLineInfo::FileNew )
        cmdInfo.m_nShellCommand = CCommandLineInfo::FileNothing;

・・・省略・・・

    return TRUE;
}