メッセージボックスを色々といじって拡張できるようにしてみた。汎用的に作ってみたものの、色々と微妙な箇所があるかも。
動作環境はとりあえず Windows XP(SP3) と、限定させていただきます。一応XPスタイルでも、レイアウトが崩れることなく表示されました。
[出来たこと] ここで特筆すべきは(3)についてであろう。かな〜り強引なことをやっている。ボタン追加を実現してはいるものの、プログラム的に正しい作りなのかはちと自信なし。配慮が足りてない実装が色々とあるかもしれない。とりあえず以下が簡易仕様である。
・vbYesNoCancel などのボタンが指定されていても、強制的に vbOKOnly に書き換える。 メッセージボックスのタイトルバーの右側に[X]ボタンがある。これはキャンセル機能を持たせたかったから、敢えて表示している。これを非表示にしたいのであれば、ボタン属性値に vbYesNo を指定して [はい][いいえ] の両ボタンを持つメッセージボックスを拡張の対象とすればよい。これが面倒な場合の代替手段としては、メッセージボックスのウィンドウプロシージャで[X]押下イベントを無効にすることが挙げられるかな。 上記プログラムの改造をする場合はご注意を。マウスイベントをフックし、さらにその先でメッセージボックスのウィンドウプロシージャによる処理を行っている。変なことをするとたちまち無限ループ、もしくはフリーズに見舞われ、タスクマネージャから強制終了する羽目になる。私は何十回(ひょっとしたら百回)以上、それを経験した。本当に疲れました。まあでも、楽しかったから問題なし!! #ちなみに今は午前5時11分なんだぜ…!? 眠いはずでありますな。ということで、おやすみなさい。 |