WM_CLOSEで閉じれないウィンドウを閉じるには?#2


おべんとう  2006-04-14 16:30:53  No: 61220  IP: 192.*.*.*

過去に同じ質問がありまして、解決済みになっているのですが、
結局どう解決したのかがわかりません。
すみませんが、どなたか解決方法を述べて頂けませんか?
よろしくお願いします。

>たとえばメモ帳の様に WM_CLOSE メッセージを送ったときに
>「変更を保存しますか?」のようなダイアログが出るアプリを
>強制終了するにはどうしたらよいでしょうか?
>
>自分なりに考えて見たものの、ダイアログが出たら
>キーイベントを合成して [いいえ(&N)] ボタンを
>押したことにするような、無茶苦茶なのしか思いつきません(泣
>これだと不都合があるので、、
>タスクマネージャがやっているようなスマートな方法があるはずですが、
>分からなくて、行き詰っています。
>
>ヒントでもあれば助かります。
>どなたかよろしくお願いいたします。

編集 削除
Blue  2006-04-14 16:36:22  No: 61221  IP: 192.*.*.*

過去ログだけでなく Googleとかをつかって検索もしてみましょう。
http://homepage2.nifty.com/DSS/VCPP/API/ProcessEnd.htm

編集 削除
YuO  2006-04-14 16:46:20  No: 61222  IP: 192.*.*.*

過去の質問をそのまま貼り付けるのではなく,URLを記述するようにしてください。
今回だと,ここでしょうか。
http://madia.world.coocan.jp/cgi-bin/Vcbbs/wwwlng.cgi?print+200404/04040005.txt

でもって,そこで書いたことと同じですが,基本的に解決策はありません。
ダイアログを出す側をなんとかするしか方法はないです。

編集 削除
おべんとう  2006-04-14 17:00:42  No: 61223  IP: 192.*.*.*

>過去ログだけでなく Googleとかをつかって検索もしてみましょう。

ありがとうございます。
肝心のWM_CLOSEを送った際のファイル保存の事は書いてないようです。
しかし、この場所は参考になります。ありがとうございます。

すみません。URLはそこです。>YuOさん

>でもって,そこで書いたことと同じですが,基本的に解決策はありません。
>ダイアログを出す側をなんとかするしか方法はないです。

そうでしたか。
以前、以下のような方法で、保存を避けて処理していましたが、
これも完璧ではないようです。
---------------------------------------
void CMainFrame::OnClose() 
{
        CDocument* pDocument = GetActiveDocument();
        if (pDocument != NULL)
                pDocument->SetModifiedFlag(FALSE);                   CFrameWnd::OnClose();
}
---------------------------------------

編集 削除
Blue  2006-04-14 17:05:22  No: 61224  IP: 192.*.*.*

> 以前、以下のような方法で、保存を避けて処理していましたが
??

閉じたいのは、自分自身でしょうか?(あなたの"以下のような方法"は自分自身の操作)
過去ログのヤツは、別アプリを閉じようとしていますよ。

編集 削除
おべんとう  2006-04-14 17:13:49  No: 61225  IP: 192.*.*.*

すみません。
わかりにくい事になってしまいました。

本来は、閉じるアプリに手を入れたくないのですが、
結局、このようなコードを閉じる側に入れるしかないかという意味で書きました。
申し訳ありません。

編集 削除
Blue  2006-04-14 17:26:46  No: 61226  IP: 192.*.*.*

> 閉じるアプリに手を入れたくないのですが
はソースのことですね。

ということは、閉じたいアプリは限定されているのでしょうか?

編集 削除
PATIO  2006-04-17 15:22:38  No: 61227  IP: 192.*.*.*

既に返答がついていますけれど、
基本的に不特定のアプリケーションを確実に安全に終了させる手段というのは
存在しません。アプリケーションの作り次第ではWM_CLOSEでは通らないルートに
必要な終了処理が書いてあるかもしれませんし。
外部から終了をさせる必要があるようなアプリであれば、それを見越した設計が
必要になると思います。
そういう意味では、おべんとうさんが終了させたいアプリ側がそれを想定していなかったのであれば、手を入れる必要は出てくると思いますよ。

編集 削除