ダイアログを複数回表示するには?

解決


BellWood  2003-01-28 23:01:35  No: 50971  IP: [192.*.*.*]

MFC にてダイアログベースのアプリを作成しています。
通常、ClassWizard でプロジェクトを作成すると、
CWinApp の派生クラスと CDialog の派生クラスが作成され、
CWinAppXXXX::InitInstance()上に CDialogXXXX のインスタンスが作成され、
アプリケーション起動と同時にダイアログボックスが表示されます。

さて、このプロセスをバックグランド化させるために、
CWinAppXXXX::InitInstance() 内でループをつくり、
あるトリガーで CDialogXXXX をモーダルウィンドウとして
表示させたいのですが、そのトリガーが発生し1回目はダイアログが
正常に表示されるのですが、2回目以降は表示ができなくなります。
(一瞬表示はされる。)
DoModal() の復帰値は -1 で GetLastError() は 0 を返します。

正常(期待通り)に動作させる方法をご存じではないでしょうか?
よろしくお願いします。

編集 削除
YuO  2003-01-29 00:03:38  No: 50972  IP: [192.*.*.*]

毎回オブジェクトを作り直してみてはどうでしょう。
#動くかどうかの保証はしませんが……。

編集 削除
BellWood  2003-01-29 09:52:13  No: 50973  IP: [192.*.*.*]

散々やりましたがNGでした。

編集 削除
YuO  2003-01-29 12:14:25  No: 50974  IP: [192.*.*.*]

とりあえず,VC++5sp3onNT4sp6aという環境において,
大元はSDIですが,
for (int i = 0; i < 5; ++i) {
    CDialog1 d;

    d.DoModal();
}
のようにしたところ,問題はなかったですが。

ループの部分の根幹のコードを書いてみてください。

編集 削除
BellWood  2003-01-29 13:10:35  No: 50975  IP: [192.*.*.*]

YuOさん、おつきあいありがとうございます。
SDIベースでテストし、何が違うのかと思いきや、
スケルトンで吐かれた m_pMainWnd = &dlg; を
コメントアウトしたらダイアログベースでも期待通りに動作しました。
ありがとうございました。

編集 削除