DOBON.NET DOBON.NETプログラミング掲示板過去ログ

Alt + F4禁止について

環境/言語:[.NET Framework 1.1]
分類:[.NET]

環境
OS:xp
フォームアプリ(.NET)
VC++

フォームをAlt + F4で閉じないように制御したいのですが、どのようにしたら制御できますでしょうか。宜しくお願いいたします。
Alt-F4使えなくなると不便だと思いませんか?
もう一度考え直しませんか?(^^;;
■No9611に返信(中博俊さんの記事)
> Alt-F4使えなくなると不便だと思いませんか?
> もう一度考え直しませんか?(^^;;

例えばデータを読み込み中、その読込み中を表すプログレスバーフォームを表示しているときにAlt + F4を押下すると処理は後ろで続いているのですが、プログレスバーフォームがない状態です。そして終わると読込み完了のメッセージがでる、という感じになってしまいます。仕様としてそれはどうなのでしょうか。一般的にはこういった場合、どのように考えるべきなのでしょうか。
どのような実装かによりますが。
メインフォームでそのプログレスフォームを制御し切れていないのが根本原因ですね。
Alt-F4に限らず、メインフォームを閉じるというのはプログラムを終了させる意思表示な訳ですから、処理中ですのでダメとか、プログレスの処理を中断させて終わるとか設計によります。

------------------------------------------------------
中博俊 MSMVP Visual Studio C# Since 2004/04-2005/03, MCP
http://naka.wankuma.com/
http://naka.wankuma.com/blog/
naka@wankuma.com
■No9613に返信(中博俊さんの記事)
> どのような実装かによりますが。
> メインフォームでそのプログレスフォームを制御し切れていないのが根本原因ですね。

そうですね、プログレスフォームを制御できてないのが根本原因です。プログレスフォームをfp(これがプログレスフォーム)としてfp->Show()で表示しているのですが、これをAlt + F4押下時に消さないようにするにはどのようにしたら実現可能でしょうか?たびたび申し訳ありませんが、宜しくお願いします。
2005/03/06(Sun) 09:09:57 編集(投稿者)

こんにちは、じゃんぬねっと です。

■No9616に返信(ひでさんの記事)
> これをAlt + F4押下時に消さないようにするにはどのようにしたら実現可能でしょうか?

Closing で Cancel すれば良いのでは?

e->Cancel = true;
> Closing で Cancel すれば良いのでは?
>
> e->Cancel = true;

呼出元フォーム(Form1)でfrmProgress *fp = new frmProgress()としてfp->Show()でプログレスフォームを表示していますが、Form1からプログレスフォームをAlt + F4で閉じないようにする手段はないでしょうか。
とりあえずプログレスバーのValueとMax値が違う間はe->Cancel = trueとしました。何かスマートじゃないですがとりあえず解決です。

どうもありがとうございました。
解決済み!
私のサイトでフォームが閉じられる原因を調べる方法を紹介していますので、この様な方法で調べて閉じるか閉じないか判断することはできるかと思います。

DOBON.NET .NET Tips - フォームが閉じられる時その原因を知る
http://dobon.net/vb/dotnet/form/unloadmode.html

DOBON.NET | プログラミング道 | プログラミング掲示板