SDIでの2つ目のViewの終了イベント


たけ  2011-04-28 10:34:57  No: 72569  IP: 192.*.*.*

WindowsXP以降
VC++2008

SDIで下記(プログラム)の様にしViewを2つ表示しています。
が2つ目の画面を表示したまま
メイン画面を閉じると、2つ目の画面も閉じるのですが
CTEST2MainFrameのデストラクタや、クローズイベントが呼ばれずに困っています。

どうしたら呼ばれるのか分かるかたいますか?

CSingleDocTemplate  *m_view2;
BOOL CTESTApp::InitInstance()
{
  // メイン画面
  CSingleDocTemplate* pDocTemplate;
  pDocTemplate = new CSingleDocTemplate(
    IDR_MAINFRAME,
    RUNTIME_CLASS(CTESTDoc),
    RUNTIME_CLASS(CMainFrame),       // メイン SDI フレーム ウィンドウ
    RUNTIME_CLASS(CTESTView));
  AddDocTemplate(pDocTemplate);

  // 2つ目の画面
  pDebugViewDocTemplate = new CSingleDocTemplate(
    IDR_DEBUG,
    RUNTIME_CLASS(CTEST2Doc),
    RUNTIME_CLASS(CTEST2MainFrame),       // メイン SDI フレーム ウィンドウ
    RUNTIME_CLASS(CTEST2View));
  AddDocTemplate(m_view2);
}

以上、よろしくお願いします。

編集 削除
forty-five  2011-05-02 17:47:30  No: 72570  IP: 192.*.*.*

VC6 WinXP Home SP3 ですけど、コンパイルエラーになるところを
直したとしても、そのコードだと2つ目のフレームが表示されないです。

    CSingleDocTemplate* pDocTemplate;
    pDocTemplate = new CSingleDocTemplate(
        IDR_MAINFRAME,
        RUNTIME_CLASS(CMultiSDIDoc),
        RUNTIME_CLASS(CMainFrame),
        RUNTIME_CLASS(CMultiSDIView));
    AddDocTemplate(pDocTemplate);

    CSingleDocTemplate* pDebugDocTemplate;
    pDebugDocTemplate = new CSingleDocTemplate(
        IDR_DEBUG,
        RUNTIME_CLASS(CDebugDoc),
        RUNTIME_CLASS(CDebugFrame),
        RUNTIME_CLASS(CDebugView));
    AddDocTemplate(pDebugDocTemplate);
    // フレームが自動的に生成されないので手動で行う。
    CDocument* pDebugDoc = pDebugDocTemplate->CreateNewDocument();
    CFrameWnd* pDebugFrame = pDebugDocTemplate->CreateNewFrame(pDebugDoc, 0);
    pDebugDocTemplate->InitialUpdateFrame(pDebugFrame, pDebugDoc);

こうやって手動でフレームを作ったらできました。
2つ目のフレームのデストラクタも呼ばれています。

編集 削除