Autoit でプログラムやツールを作成する際に、メッセージボックス(MsgBox)は、よく使うものです。
MsgBox にはたくさんの種類があり、MsgBox を使用する際は、各場所に合ったものを使用する必要があります。
今回は、メッセージボックス(MsgBox)の種類と組み合わせ、詳細を紹介します。
MsgBox の種類
MsgBox ( flag, “title”, “text” [, timeout [, hwnd]] )
まず次の画像を見てみましょう。
左上にパラメーター「flag」を表示しています。
MsgBox は 17 種類あり、各フラグで表示されるボタン、アイコン、表示方法が違ってきます。
MsgBox は 17 種類ですが、各フラグは組み合わせることができます。
例えばフラグ「256」の場合、”2番目のボタンがデフォルトボタンになります”となっていますが、おそらく初めての方は意味が分からないと思います。
2番目のボタンがデフォルトボタンになるという意味は、ボタンが複数ある場合に2番目のボタンがフォーカス(選択された状態)され、MsgBox が表示された際に、そのまま Enter を押せば2番目のボタンが押されるようになります。
MsgBox 組み合わせ例
先ほど MsgBox は各フラグを組み合わせることができますと言いました。
次の例を見てみましょう。
- MsgBox(256, 256, “2番目のボタンがデフォルトボタンになります。”)
- MsgBox(256 + 2, “256 + 2”, “2番目のボタンがデフォルトボタンになります。”)
「2番目のボタンがデフォルトボタンになります」と「中止, 再試行, 無視」を組み合わせたものができます。
画像を見ると2番目のボタンにフォーカスされていることが分かります。
次はフラグを3つ組み合わせたものです。
フラグは「256 + 2 + 262144」という形式でもいいし、「262144」のように3つ足した数を記述しても同じ動作をします。
- MsgBox(256 + 2 + 262144, “256 + 2 + 262144”, “2番目のボタンがデフォルトボタンになります。”)
- MsgBox(262144, “256 + 2 + 262144”, “2番目のボタンがデフォルトボタンになります。”)
こちらは中止, 再試行, 無視の3つのボタンの表示、2番目のボタンにフォーカス、さらにどのウィンドウよりもトップに表示されます。
MsgBox組み合わせ例3 サンプルコード
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
Opt("GUIOnEventMode", 1)
$Form1 = GUICreate("Form1", 236, 240)
GUISetOnEvent($GUI_EVENT_CLOSE, "Form1Close")
$Button1 = GUICtrlCreateButton("Button1", 8, 8, 219, 65)
GUICtrlSetOnEvent(-1, "Button1Click")
$Button2 = GUICtrlCreateButton("Button2", 8, 80, 219, 73)
GUICtrlSetOnEvent(-1, "Button2Click")
$Button3 = GUICtrlCreateButton("Button3", 8, 160, 219, 73)
GUICtrlSetOnEvent(-1, "Button3Click")
GUISetState(@SW_SHOW)
While 1
Sleep(100)
WEnd
Func Button1Click()
MsgBox(0, "", "Button1 をクリックしました。")
EndFunc ;==>Button1Click
Func Button2Click()
MsgBox(16, "エラー", "あなたがクリックしたのは Button1 ではありません!")
EndFunc ;==>Button2Click
Func Button3Click()
MsgBox(16 + 32 + 48 + 64, "16 + 32 + 48 + 64", "フラグを4つ組み合わせています。" & @CRLF & "アイコンのあるフラグは同時に指定できないことが分かります。")
EndFunc ;==>Button3Click
Func Form1Close()
Exit
EndFunc ;==>Form1Close
MsgBox オプション
MsgBox ( flag, “title”, “text” [, timeout [, hwnd]] )
MsgBox のオプションには、タイムアウトと親ウィンドウの指定があります。
次のコードは、タイムアウトを「5秒」に設定し、親ウィンドウを「$Form1」に指定しています。
MsgBox(0, “”, “Button1 をクリックしました。”, 5, $Form1); タイムアウトは「0」を指定すると無制限になります。
動画を見ると分かるように、MsgBox は5秒経つと自動で終了され、MsgBox が表示されたまま親ウィンドウをクリックすると、MsgBox が点滅します。
親ウィンドウを指定すると、MsgBox が表示されると同時に、親ウィンドウが無効になり、MsgBox が消えるまで親ウィンドウを終了することができません。
通常は親ウィンドウを指定しておくことをおすすめします。
MsgBox の大きさや、文字のサイズは指定することはできません。
MsgBox の表示される位置は、常に画面の真ん中です。
MsgBox の大きさや、文字のサイズ、表示位置を変えたいと思うなら、ご自身で MsgBox と同様に動作するウィンドウを作成して実現することもできます。
コメント