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);
}
以上、よろしくお願いします。
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つ目のフレームのデストラクタも呼ばれています。
ツイート | ![]() |