Function Reference

GUIGetMsg

なにかイベントが起きていないかどうか確認するためGUIをポーリングします。

GUIGetMsg ( [advanced] )

 

パラメータ

advanced [オプション] 拡張情報を配列で返します。
0 = (デフォルト) イベントを1つ返します。
1 = イベントとその拡張情報を格納した配列を返します。

 

返し値

イベントを返すか、配列を返すかは"advanced"によって異なります。
返される"イベント"はメッセージを送信したコントロールのコントロールIDもしくは特別なイベント(ウィンドウが閉じられた、最小化されたなど)です。メッセージが無い場合はイベントは0になります。


イベントID メッセージを送信しているコントロールのID
0 イベントなし
$GUI_EVENT_CLOSE (定義したボタン、またはシステムメニューによって)ダイアログボックスが閉じられました。
$GUI_EVENT_MINIMIZE ウィンドウタイトルバーのボタンによってダイアログボックスが最小化されました。
$GUI_EVENT_RESTORE タスクバーアイコンのクリックによってダイアログボックスが元に戻されました。
$GUI_EVENT_MAXIMIZE ウィンドウタイトルバーのボタンによってダイアログボックスが最大化されました。
$GUI_EVENT_MOUSEMOVE マウスカーソルが動きました。
$GUI_EVENT_PRIMARYDOWN マウス第1ボタンが押されました。
$GUI_EVENT_PRIMARYUP マウス第1ボタンが離されました。
$GUI_EVENT_SECONDARYDOWN マウス第2ボタンが押されました。
$GUI_EVENT_SECONDARYUP マウス第2ボタンが離されました。
$GUI_EVENT_RESIZED ダイアログボックスのサイズが変更されました。
$GUI_EVENT_DROPPED ドラッグアンドドロップアクションがおこなわれました。@GUI_DRAGID、@GUI_DRAGFILE、@GUI_DROPIDを使用して関係するコントロールに対応するID/ファイルを取得できます。


"advanced"パラメータを使用すると拡張情報を伴った情報が配列で返されます。
$array[0] = 0 または イベントID または コントロールID
$array[1] = イベントが起きたウィンドウのハンドル
$array[2] = イベントが起きたコントロールのハンドル(適用可能な場合)
$array[3] = マウスカーソルの現在のX座標(GUIウィンドウに対する相対値)
$array[4] = マウスカーソルの現在のY座標(GUIウィンドウに対する相対値)


GUIOnEventModオプションが1に設定されている場合、GUIGetMsgの返し値は常に0で@errorが1に設定されます。
GUIEventOptionsオプションが1に設定されている場合、最小化、復元、最大化ボタンはウィンドウに対して動作せず通知だけがおこなわれます。

 

注意

この関数は動作時に自動でCPUをアイドリングします。従ってループ内で使用した場合もCPUを占有することはありません。

マウスの位置、あたっているコントロールについての情報はGUIGetCursorInfoを使って取得できます。マウスがコントロール上にありイベントが発生していない場合はコントロールID取得にはGUIGetCursorInfoを呼び出さなければなりません。

 

関連

GUICreate, GUICtrlCreate..., GUICtrlRead, GUIOnEventMode (Option), GUIEventOptions (Option), GUIGetCursorInfo, GUICtrlSendMsg, GUICtrlSetOnEvent

 


#include <GUIConstantsEx.au3>

Opt('MustDeclareVars', 1)

Example()

;-------------------------------------------------------------------------------------
; 例 - ラジオボックスの値を見るためにボタンを押す
; スクリプトは状態の変化(閉じた/最小化/タイムアウトなど)も検知する
Func Example()
    Local $button_1, $group_1, $radio_1, $radio_2, $radio_3
    Local $radioval1, $radioval2, $msg

    Opt("GUICoordMode", 1)
    GUICreate("Radio Box Demo", 400, 280)

    ; コントロール作成
    $button_1 = GUICtrlCreateButton("B&utton 1", 30, 20, 120, 40)
    $group_1 = GUICtrlCreateGroup("Group 1", 30, 90, 165, 160)
    GUIStartGroup()
    $radio_1 = GUICtrlCreateRadio("Radio &0", 50, 120, 70, 20)
    $radio_2 = GUICtrlCreateRadio("Radio &1", 50, 150, 60, 20)
    $radio_3 = GUICtrlCreateRadio("Radio &2", 50, 180, 60, 20)

    ; GUIイベントの追跡に使用する値の初期化
    $radioval1 = 0    ; 0=最初のラジオボタンを選択、2=残りラジオボタンを選択 とする。
    $radioval2 = 2

    ; GUI表示
    GUISetState()

    ; メッセージループ内では変数を使ってラジオの変更を追跡する
    ; 別の方法としては各コントロールの状態をGUICtrlRead()を使って読み取る方法もある
    While 1
        $msg = GUIGetMsg()
        Select
            Case $msg = $GUI_EVENT_CLOSE
                MsgBox(0, "", "Dialog was closed")
                Exit
            Case $msg = $GUI_EVENT_MINIMIZE
                MsgBox(0, "", "Dialog minimized", 2)
            Case $msg = $GUI_EVENT_MAXIMIZE
                MsgBox(0, "", "Dialog restored", 2)

            Case $msg = $button_1
                MsgBox(0, "Default button clicked", "Radio " & $radioval1)

            Case $msg >= $radio_1 And $msg <= $radio_3
                $radioval1 = $msg - $radio_1

        EndSelect
    WEnd
EndFunc   ;==>Example