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

MessageBoxでのエスケープボタンの処理について

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

はじめまして、りきと言います。

現在、Windowsアプリケーションの開発に携わっているのですが
MessageBoxクラスについて質問があります。

私が使おうとしているのは、「はい/いいえ」のメッセージボックスなのですが
これを表示時にエスケープボタンで、ダイアログを閉じるようにすることはできますでしょうか?

他のダイアログ(OK/キャンセルなど一部)で、「×」ボタン(ダイアログ右上)のEnableがTrueなダイアログはエスケープボタンでダイアログが閉じます。

以上、よろしくおねがいします
> MessageBoxクラスについて質問があります。
> 私が使おうとしているのは、「はい/いいえ」のメッセージボックスなのですが
> これを表示時にエスケープボタンで、ダイアログを閉じるようにすることはできますでしょうか?
> 他のダイアログ(OK/キャンセルなど一部)で、「×」ボタン(ダイアログ右上)のEnableがTrueなダイアログはエスケープボタンでダイアログが閉じます。

.NET FrameworkクラスライブラリのMessageBoxクラスは内部では
Win32 API のMessageBox関数を呼び出しています。
従って、ダイアログの本体はこの関数の仕様によって決まるわけですが、
キャンセルボタンの無いダイアログにエスケープキーが無反応なのは仕様です。

http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/jpwinui/html/_win32_messagebox.asp

どうしてもこれをエスケープで閉じたいとすると、このダイアログを
フックするなど厄介なことになりそうです。(^^;
メッセージダイアログくらいならば、特に理由が無い限り、作ったほうが
早いと思います。
■No6381に返信(antさんの記事)
>>MessageBoxクラスについて質問があります。
>>私が使おうとしているのは、「はい/いいえ」のメッセージボックスなのですが
>>これを表示時にエスケープボタンで、ダイアログを閉じるようにすることはできますでしょうか?
>>他のダイアログ(OK/キャンセルなど一部)で、「×」ボタン(ダイアログ右上)のEnableがTrueなダイアログはエスケープボタンでダイアログが閉じます。
>
> .NET FrameworkクラスライブラリのMessageBoxクラスは内部では
> Win32 API のMessageBox関数を呼び出しています。
> 従って、ダイアログの本体はこの関数の仕様によって決まるわけですが、
> キャンセルボタンの無いダイアログにエスケープキーが無反応なのは仕様です。
>
> http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/jpwinui/html/_win32_messagebox.asp
>
> どうしてもこれをエスケープで閉じたいとすると、このダイアログを
> フックするなど厄介なことになりそうです。(^^;
> メッセージダイアログくらいならば、特に理由が無い限り、作ったほうが
> 早いと思います。

antさん返信ありがとうございます。

確かに、自前でダイアログを作るなりしたほうが早いですね。
ありがとうございました。
解決済み!

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