しかし、空のドキュメントを開かせようとすると、プログラム起動時にドキュメントタイプを選択するダイアログが出てしまう。
これは知らないユーザにとっては何を選択するべきか、判りにくい。
で、空のドキュメントは常にデフォルトのドキュメントタイプを開かせておき、その後、実ファイルを開いた時だけ該当のドキュメントタイプが利用できる様にしたい場合。
拡張子だけで、中身のないファイルを扱えるようにしてあるので、ドキュメントタイプを指定して新規ファイルを作成できなくても問題がないようになっている前提である。ちょっと特殊かもしれないが、とにかく選択ダイアログは判りにくいので表示しない。
CWinApp::InitInstace()
{
................
CMultiDocTemplate* pDocTemplate;
pDocTemplate = new CMultiDocTemplate(IDR_XXXXXXXXTYPE,
RUNTIME_CLASS(CXXXXXXXXDoc),
RUNTIME_CLASS(CChildFrame), // カスタム MDI 子フレーム
RUNTIME_CLASS(CXXXXXXXXView));
if (!pDocTemplate)
return FALSE;
AddDocTemplate(pDocTemplate);
通常はここに追加のテンプレートを定義するのだが、コマンドラインに指定がなければ追加しない。
if (strlen(m_lpCmdLine))
{
pDocTemplate = new CMultiDocTemplate(IDR_YYYYYYYYTYPE,
RUNTIME_CLASS(CYYYYYYYYDoc),
RUNTIME_CLASS(CChildFrame), // カスタム MDI 子フレーム
RUNTIME_CLASS(CYYYYYYYYView2));
if (!pDocTemplate)
return FALSE;
AddDocTemplate(pDocTemplate);
}
................
pMainFrame->UpdateWindow();
// このInitInstance()の最後で、追加しなかったドキュメントタイプを追加しておく
if (!strlen(m_lpCmdLine))
{
pDocTemplate = new CMultiDocTemplate(IDR_YYYYYYYYTYPE,
RUNTIME_CLASS(CYYYYYYYYDoc),
RUNTIME_CLASS(CChildFrame), // カスタム MDI 子フレーム
RUNTIME_CLASS(CYYYYYYYYView2));
if (!pDocTemplate)
return FALSE;
AddDocTemplate(pDocTemplate);
}
}
0 件のコメント:
コメントを投稿