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


おべんとう  2006-04-15 01:30:53  No: 61220

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

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


Blue  2006-04-15 01:36:22  No: 61221

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


YuO  2006-04-15 01:46:20  No: 61222

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

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


おべんとう  2006-04-15 02:00:42  No: 61223

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

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

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

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

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


Blue  2006-04-15 02:05:22  No: 61224

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

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


おべんとう  2006-04-15 02:13:49  No: 61225

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

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


Blue  2006-04-15 02:26:46  No: 61226

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

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


PATIO  2006-04-18 00:22:38  No: 61227

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


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加