開発環境:WinXP SP3 vc++ 2003 MFC MDI
半年ほどCを学んだ後に、VC++MFCを三ヶ月程勉強している初心者です。
現在二つのテンプレートを作成し、二つのドキュメントを表示させています。
第一ドキュメントは新規作成で開き、第二ドキュメントは第一ドキュメントをクリック
することで開くようにしています。
この第二ドキュメントがすでに開いていたときに第一ドキュメントをクリックした場
合、第二ドキュメントを一度閉じてから新たに開くことで、第二ドキュメントをひとつ
だけ表示させていたいです。
一通りヘルプなどを調べたつもりなのですが、ヒントもみつけられませんでした。
・特定のドキュメントをひとつだけ閉じる方法
について教えてください。よろしくお願いいたします。
対象となるドキュメントが特定できるならば、CDocument::OnCloseDocument()を
呼び出せばok。
Kerry 様
ありがとうございます。
ドキュメントを取得して、nDoc->OnCloseDocument();をしてみましたがエラーで落ちて
しまいます。
--------------------
LRESULT CLV::DefWindowProc(UINT message, WPARAM wParam, LPARAM lParam)
{
if(message == WM_LBUTTONDBLCLK){
//ドキュメントを取得
CDocument* nDoc = (CDocument*)GetDocument();
POSITION pos = GetDocument()->GetDocTemplate()->GetFirstDocPosition();
int n = 0;
while(pos != NULL){
nDoc = GetDocument()->GetDocTemplate()->GetNextDoc(pos);
n++;
}
→ if(n > 1)nDoc->OnCloseDocument();//1以上ドキュメントがあったら閉じる
//第二ドキュメントオープン
((CtestApp*)AfxGetApp())->Open2((CDocument*)GetDocument());
}
return CListView::DefWindowProc(message, wParam, lParam);
}
--------------------
test.exe の 0x7c809eca で初回の例外が発生しました : 0xC0000005: 場所
0xfeeefeee を読み込み中にアクセス違反が発生しました。 。
ASSERT_VALID fails with illegal pointer.
--------------------
対象となるドキュメントの特定の方法が間違っているのでしょうか?
またよいドキュメントの特定の方法があったら教えてください。お願いします。