VC++2005のMFCダイアログベースでプログラムを作成しています。

自動生成されたプログラムを何も変更しないまま実行すると、
メインのダイアログが表示されますが、
そのダイアログを表示させずに、ファイル選択ダイアログを表示させたいのです。
自分で実装しビルド実行したところ、期待動作をしましたが、
ファイル選択ダイアログを閉じた後に、画像のようなエラーが発生してしまいます。
エラーを発生させず、期待動作をさせる良い実装方法をご存知の方おられましたら、
ご教示お願い致します。

【変更実装(エラー発生)】
BOOL CtestApp::InitInstance()
{

CtestDlg dlg;
m_pMainWnd = &dlg;
//INT_PTR nResponse = dlg.DoModal(); //コメントアウト
dlg.OnBnClickedButton1(); //ファイル選択ダイアログを表示する関数
//if (nResponse == IDOK) //コメントアウト
//else if (nResponse == IDCANCEL) //コメントアウト

}
void CtestDlg::OnBnClickedButton1()
{
CFileDialog ReadDlg( TRUE, NULL, "*.txt", OFN_HIDEREADONLY | OFN_FILEMUSTEXIST,
"txtファイル(*.txt)", this );

}

「メインダイアログを表示させずにファイル選」の質問画像

A 回答 (1件)

ファイルダイアログを出すだけなのなら、



CtestDlgの代わりにCFileDialogにすればいいだけですよ。
CtestDlgクラスそのものがいりません。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
確かにそうですね。。ただ今回の方法としては、
CtestDlgのメンバ関数であるCFileDialogを用いた関数をコールし、
期待動作をさせるつもりでしたので、このような回りくどい方法となってしまったのです。
今確認したところ、
m_pMainWnd = &dlg;
をコメントアウトすることで期待動作させることが出来ました。
どうやらAfxWinMainの中で落ちていたようです。
アドバイスありがとうございました。

お礼日時:2009/05/17 15:59

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


人気Q&Aランキング