MFC にてダイアログベースのアプリを作成しています。
通常、ClassWizard でプロジェクトを作成すると、
CWinApp の派生クラスと CDialog の派生クラスが作成され、
CWinAppXXXX::InitInstance()上に CDialogXXXX のインスタンスが作成され、
アプリケーション起動と同時にダイアログボックスが表示されます。
さて、このプロセスをバックグランド化させるために、
CWinAppXXXX::InitInstance() 内でループをつくり、
あるトリガーで CDialogXXXX をモーダルウィンドウとして
表示させたいのですが、そのトリガーが発生し1回目はダイアログが
正常に表示されるのですが、2回目以降は表示ができなくなります。
(一瞬表示はされる。)
DoModal() の復帰値は -1 で GetLastError() は 0 を返します。
正常(期待通り)に動作させる方法をご存じではないでしょうか?
よろしくお願いします。
毎回オブジェクトを作り直してみてはどうでしょう。
#動くかどうかの保証はしませんが……。
散々やりましたがNGでした。
編集 削除とりあえず,VC++5sp3onNT4sp6aという環境において,
大元はSDIですが,
for (int i = 0; i < 5; ++i) {
CDialog1 d;
d.DoModal();
}
のようにしたところ,問題はなかったですが。
ループの部分の根幹のコードを書いてみてください。
YuOさん、おつきあいありがとうございます。
SDIベースでテストし、何が違うのかと思いきや、
スケルトンで吐かれた m_pMainWnd = &dlg; を
コメントアウトしたらダイアログベースでも期待通りに動作しました。
ありがとうございました。