SDIの初期化で失敗した時の終了方法は?

解決


geo  2003-08-28 15:47:26  No: 52019  IP: [192.*.*.*]

Windows2000 VC6.0 SDIで開発をしています。
OnInitialUpdate()で初期化する際に、サーバにコネクトするように
しています。その際、コネクトできなかったら、終了させたいのですが、
どのように終了させれば良いのか分かりません。
OnAppExit や OnDestroy を使用するのかなと思って書いてみたのですが、
これらの処理は、ウインドウが描画されてから有効になるのでしょうか?

DialogベースだとEndDialog(IDCANCEL)で簡単にできたのですが、
同じように、SDIで終了させる方法はありますでしょうか。
よろしくお願いいたします。

編集 削除
tetrapod  2003-08-29 12:27:54  No: 52020  IP: [192.*.*.*]

OnInitialUpdate でサーバコネクトですか?
そりゃ設計が変。すっごく変。
終了させるにはとりあえず PostQuitMessage とか。

編集 削除
geo  2003-08-29 16:26:38  No: 52021  IP: [192.*.*.*]

PostQuitMessage(0);
と書いてみたのですが、一度ウインドウが起動してから終了します。
ウインドウを表示させないで終了させる方法はありますでしょうか。
よろしくお願いいたします。

編集 削除
tetrapod  2003-08-29 17:01:29  No: 52022  IP: [192.*.*.*]

サーバコネクトが必須であるなら OnInitialUpdate でこれをチェックするのでは
手遅れだということは大丈夫でしょうか?
# っていうかサーバコネクションって View の所有物なの?

ウィンドウを出さないで終了させるには InitInstance での処理が必要です。
AppWizard の出力した MFC SDI アプリの CXXXWinApp::InitInstance で
いきなり return FALSE すれば窓は出ません。

スプラッシュスクリーンもなしダイアログもなしエラー警告もなしで
だんまりのまま終了ですか?俺がユーザーだったら怒り狂うでしょうなぁ。

編集 削除
geo  2003-08-30 15:19:42  No: 52023  IP: [192.*.*.*]

tetrapodさんご忠告ありがとうございます。
使い方が特注でして、このような仕様になっています。
一度、コネクトして、接続できなかった場合には、
[中止][再試行][無視]のダイアログを出そうとしています。
ここで、[中止]が押された場合の処理で、ウインドウを
クローズしたいのですが、ちょっと描画されてしまうので
見た目が気になりました。
とりあえず、ShowWindow(SW_HIDE)でできるだけ
見せないようにしました。
ありがとうございました。

編集 削除