Function Reference

_GUICtrlStatusBar_Create

ステータスバーを作成します。

#Include <GuiStatusBar.au3>
_GUICtrlStatusBar_Create($hWnd[, $vPartEdge = -1[, $vPartText = ""[, $iStyles = -1[, $iExStyles = 0x00000000]]]])

 

パラメータ

$hWnd 親ウィンドウのハンドル
$vPartEdge [オプション]パーツの幅。1パーツ以上を次のフォーマットのゼロ始まりの配列で渡します:
$vPartEdge[0] - パーツ#1の右境界
$vPartEdge[1] - パーツ#2の右境界
$vPartEdge[n] - パーツ#nの右境界
$vPartText [オプション]パーツのテキスト。1パーツ以上を次のフォーマットのゼロ始まりの配列で渡します:
$vPartText[0] - 1つめのパーツ
$vPartText[1] - 2つめのパーツ
$vPartText[n] - 最後のパーツ
$iStyles [オプション]コントロールのスタイル:
$SBARS_SIZEGRIP - ステータスバーの右端にサイズ変更用グリップを取り付けます
$SBARS_TOOLTIPS - ステータスバーにツールチップを取り付けます
強制: $WS_CHILD、$WS_VISIBLE
$iExStyles [オプション]コントロール拡張スタイル

 

返し値

成功: コントロールのハンドル
失敗: 0

 

注意

GUICtrlCreateMenuを使用する場合、GUICtrlCreateMenu後に_GUICtrlStatusBar_Createを使用してください。

 

関連

_GUICtrlStatusBar_Destroy

 


#include <GuiConstantsEx.au3>
#include <GuiStatusBar.au3>
#include <ComboConstants.au3>
#include <EditConstants.au3>
#include <WindowsConstants.au3>

Opt('MustDeclareVars', 1)

$Debug_SB = False ; 関数に渡されるClassNameを調べる。動作を確認するにはTrueを設定し、他のコントロールのハンドルを使用

Global $iMemo, $MainGUI, $hStatus

Example1()
Example2()
Example3()
Example4()
Example5()
Example6()

Func Example1()

    Local $hGUI
    Local $aParts[3] = [75, 150, -1]
   
    ; GUIを作成
    $hGUI = GUICreate("(Example 1) StatusBar Create", 400, 300)

    ;===============================================================================
    ; デフォルト 1パーツ、テキストなし
    $hStatus = _GUICtrlStatusBar_Create ($hGUI)
    ;===============================================================================
    _GUICtrlStatusBar_SetParts ($hStatus, $aParts)

    ; メモコントロールを作成
    $iMemo = GUICtrlCreateEdit("", 2, 2, 396, 274, $WS_VSCROLL)
    GUICtrlSetFont($iMemo, 9, 400, 0, "Courier New")
    GUICtrlSendMsg($iMemo, $EM_SETREADONLY, True, 0)
    GUICtrlSetBkColor($iMemo, 0xFFFFFF)
    MemoWrite("StatusBar Created with:" & @CRLF & _
            @TAB & "Handle to GUI window" & @CRLF)
    GUISetState()

    GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY")

    ; 境界のサイズを取得
    MemoWrite("Horizontal border width .: " & _GUICtrlStatusBar_GetBordersHorz ($hStatus))
    MemoWrite("Vertical border width ...: " & _GUICtrlStatusBar_GetBordersVert ($hStatus))
    MemoWrite("Width between rectangles : " & _GUICtrlStatusBar_GetBordersRect ($hStatus))

    ; ユーザーが終了するまでループ
    Do
    Until GUIGetMsg() = $GUI_EVENT_CLOSE
    GUISetState(@SW_ENABLE, $MainGUI)
    GUIDelete($hGUI)
EndFunc   ;==>Example1

Func Example2()

    Local $hGUI
    Local $aParts[3] = [75, 150, -1]
   
    ; GUIを作成
    $hGUI = GUICreate("(Example 2) StatusBar Create", 400, 300)

    ;===============================================================================
    ; テキストなしのパーツを設定
    $hStatus = _GUICtrlStatusBar_Create ($hGUI, $aParts)
    ;===============================================================================

    ; メモコントロールを作成
    $iMemo = GUICtrlCreateEdit("", 2, 2, 396, 274, $WS_VSCROLL)
    GUICtrlSetFont($iMemo, 9, 400, 0, "Courier New")
    GUICtrlSendMsg($iMemo, $EM_SETREADONLY, True, 0)
    GUICtrlSetBkColor($iMemo, 0xFFFFFF)
    MemoWrite("StatusBar Created with:" & @CRLF & _
            @TAB & "Handle to GUI window" & @CRLF & _
            @TAB & "part width array of 3 elements" & @CRLF)
    GUISetState()

    GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY")

    ; 境界のサイズを取得
    MemoWrite("Horizontal border width .: " & _GUICtrlStatusBar_GetBordersHorz ($hStatus))
    MemoWrite("Vertical border width ...: " & _GUICtrlStatusBar_GetBordersVert ($hStatus))
    MemoWrite("Width between rectangles : " & _GUICtrlStatusBar_GetBordersRect ($hStatus))

    ; ユーザーが終了するまでループ
    Do
    Until GUIGetMsg() = $GUI_EVENT_CLOSE
    GUISetState(@SW_ENABLE, $MainGUI)
    GUIDelete($hGUI)
EndFunc   ;==>Example2

Func Example3()

    Local $hGUI
    Local $aText[3] = ["Left Justified", @TAB & "Centered", @TAB & @TAB & "Right Justified"]
    Local $aParts[3] = [100, 175, -1]
   
    ; GUIを作成
    $hGUI = GUICreate("(Example 3) StatusBar Create", 400, 300)

    ;===============================================================================
    ; パーツとテキストを設定
    $hStatus = _GUICtrlStatusBar_Create ($hGUI, $aParts, $aText)
    ;===============================================================================

    ; メモコントロールを作成
    $iMemo = GUICtrlCreateEdit("", 2, 2, 396, 274, $WS_VSCROLL)
    GUICtrlSetFont($iMemo, 9, 400, 0, "Courier New")
    GUICtrlSendMsg($iMemo, $EM_SETREADONLY, True, 0)
    GUICtrlSetBkColor($iMemo, 0xFFFFFF)
    MemoWrite("StatusBar Created with:" & @CRLF & _
            @TAB & "only Handle," & @CRLF & _
            @TAB & "part width array of 3 elements" & @CRLF & _
            @TAB & "part text array of 3 elements" & @CRLF)
    GUISetState()

    GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY")

    ; 境界のサイズを取得
    MemoWrite("Horizontal border width .: " & _GUICtrlStatusBar_GetBordersHorz ($hStatus))
    MemoWrite("Vertical border width ...: " & _GUICtrlStatusBar_GetBordersVert ($hStatus))
    MemoWrite("Width between rectangles : " & _GUICtrlStatusBar_GetBordersRect ($hStatus))

    ; ユーザーが終了するまでループ
    Do
    Until GUIGetMsg() = $GUI_EVENT_CLOSE
    GUISetState(@SW_ENABLE, $MainGUI)
    GUIDelete($hGUI)
EndFunc   ;==>Example3

Func Example4()

    Local $hGUI
    Local $aText[3] = ["Left Justified", @TAB & "Centered", @TAB & @TAB & "Right Justified"]
   
    ; GUIを作成
    $hGUI = GUICreate("(Example 4) StatusBar Create", 400, 300)

    ;===============================================================================
    ; 渡されたパーツサイズに基づいてパーツの幅を設定
    $hStatus = _GUICtrlStatusBar_Create ($hGUI, 100, $aText)
    ;===============================================================================

    ; メモコントロールを作成
    $iMemo = GUICtrlCreateEdit("", 2, 2, 396, 274, $WS_VSCROLL)
    GUICtrlSetFont($iMemo, 9, 400, 0, "Courier New")
    GUICtrlSendMsg($iMemo, $EM_SETREADONLY, True, 0)
    GUICtrlSetBkColor($iMemo, 0xFFFFFF)
    MemoWrite("StatusBar Created with:" & @CRLF & _
            @TAB & "only Handle," & @CRLF & _
            @TAB & "part width number" & @CRLF & _
            @TAB & "part text array of 3 elements" & @CRLF)
    GUISetState()

    GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY")

    ; 境界のサイズを取得
    MemoWrite("Horizontal border width .: " & _GUICtrlStatusBar_GetBordersHorz ($hStatus))
    MemoWrite("Vertical border width ...: " & _GUICtrlStatusBar_GetBordersVert ($hStatus))
    MemoWrite("Width between rectangles : " & _GUICtrlStatusBar_GetBordersRect ($hStatus))

    ; ユーザーが終了するまでループ
    Do
    Until GUIGetMsg() = $GUI_EVENT_CLOSE
    GUISetState(@SW_ENABLE, $MainGUI)
    GUIDelete($hGUI)
EndFunc   ;==>Example4

Func Example5()

    Local $hGUI
    Local $aText[3] = ["Left Justified", @TAB & "Centered", @TAB & @TAB & "Right Justified"]
    Local $aParts[2] = [100, 175]
   
    ; GUIを作成
    $hGUI = GUICreate("(Example 5) StatusBar Create", 400, 300)


    ;===============================================================================
    ; 渡された最大配列に配列を合わせる(ここではテキスト配列が最大)
    $hStatus = _GUICtrlStatusBar_Create ($hGUI, $aParts, $aText)
    ;===============================================================================

    ; メモコントロールを作成
    $iMemo = GUICtrlCreateEdit("", 2, 2, 396, 274, $WS_VSCROLL)
    GUICtrlSetFont($iMemo, 9, 400, 0, "Courier New")
    GUICtrlSendMsg($iMemo, $EM_SETREADONLY, True, 0)
    GUICtrlSetBkColor($iMemo, 0xFFFFFF)
    MemoWrite("StatusBar Created with:" & @CRLF & _
            @TAB & "only Handle," & @CRLF & _
            @TAB & "part width array of 2 elements" & @CRLF & _
            @TAB & "part text array of 3 elements" & @CRLF)
    GUISetState()

    GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY")

    ; 境界のサイズを取得
    MemoWrite("Horizontal border width .: " & _GUICtrlStatusBar_GetBordersHorz ($hStatus))
    MemoWrite("Vertical border width ...: " & _GUICtrlStatusBar_GetBordersVert ($hStatus))
    MemoWrite("Width between rectangles : " & _GUICtrlStatusBar_GetBordersRect ($hStatus))

    ; ユーザーが終了するまでループ
    Do
    Until GUIGetMsg() = $GUI_EVENT_CLOSE
    GUISetState(@SW_ENABLE, $MainGUI)
    GUIDelete($hGUI)
EndFunc   ;==>Example5

Func Example6()

    Local $hGUI
    Local $aText[2] = ["Left Justified", @TAB & "Centered"]
    Local $aParts[3] = [100, 175, -1]
   
    ; GUIを作成
    $hGUI = GUICreate("(Example 6) StatusBar Create", 400, 300)

    ;===============================================================================
    ; 渡された最大配列に配列を合わせる(ここではパーツ幅配列)
    $hStatus = _GUICtrlStatusBar_Create ($hGUI, $aParts, $aText)
    ;===============================================================================

    ; メモコントロールを作成
    $iMemo = GUICtrlCreateEdit("", 2, 2, 396, 274, $WS_VSCROLL)
    GUICtrlSetFont($iMemo, 9, 400, 0, "Courier New")
    GUICtrlSendMsg($iMemo, $EM_SETREADONLY, True, 0)
    GUICtrlSetBkColor($iMemo, 0xFFFFFF)
    MemoWrite("StatusBar Created with:" & @CRLF & _
            @TAB & "only Handle," & @CRLF & _
            @TAB & "part width array of 3 elements" & @CRLF & _
            @TAB & "part text array of 2 elements" & @CRLF)
    GUISetState()

    GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY")

    ; 境界のサイズを取得
    MemoWrite("Horizontal border width .: " & _GUICtrlStatusBar_GetBordersHorz ($hStatus))
    MemoWrite("Vertical border width ...: " & _GUICtrlStatusBar_GetBordersVert ($hStatus))
    MemoWrite("Width between rectangles : " & _GUICtrlStatusBar_GetBordersRect ($hStatus))

    ; ユーザーが終了するまでループ
    Do
    Until GUIGetMsg() = $GUI_EVENT_CLOSE
    GUISetState(@SW_ENABLE, $MainGUI)
    GUIDelete($hGUI)
EndFunc   ;==>Example6

; メモ帳にメッセージを書き込む
Func MemoWrite($sMessage = "")
    GUICtrlSetData($iMemo, $sMessage & @CRLF, 1)
EndFunc   ;==>MemoWrite

Func WM_NOTIFY($hWnd, $iMsg, $iwParam, $ilParam)
    Local $hWndFrom, $iIDFrom, $iCode, $tNMHDR

    $tNMHDR = DllStructCreate($tagNMHDR, $ilParam)
    $hWndFrom = HWnd(DllStructGetData($tNMHDR, "hWndFrom"))
    $iIDFrom = DllStructGetData($tNMHDR, "IDFrom")
    $iCode = DllStructGetData($tNMHDR, "Code")
    Switch $hWndFrom
        Case $hStatus
            Switch $iCode
                Case $NM_CLICK  ; ユーザーがコントロールでマウス左ボタンをクリック
                    Local $tinfo = DllStructCreate($tagNMMOUSE, $ilParam)
                    $hWndFrom = HWnd(DllStructGetData($tinfo, "hWndFrom"))
                    $iIDFrom = DllStructGetData($tinfo, "IDFrom")
                    $iCode = DllStructGetData($tinfo, "Code")
                    _DebugPrint("$NM_CLICK" & @LF & "--> hWndFrom:" & @TAB & $hWndFrom & @LF & _
                            "-->IDFrom:" & @TAB & $iIDFrom & @LF & _
                            "-->Code:" & @TAB & $iCode & @LF & _
                            "-->ItemSpec:" & @TAB & DllStructGetData($tinfo, "ItemSpec") & @LF & _
                            "-->ItemData:" & @TAB & DllStructGetData($tinfo, "ItemData") & @LF & _
                            "-->X:" & @TAB & DllStructGetData($tinfo, "X") & @LF & _
                            "-->Y:" & @TAB & DllStructGetData($tinfo, "Y") & @LF & _
                            "-->HitInfo:" & @TAB & DllStructGetData($tinfo, "HitInfo"))
                    Return TRUE ; マウスクリックが制御され、システムによるデフォルト処理が抑制されたことを表す
;~                  Return FALSE ; クリックに対するデフォルト処理を許可
                Case $NM_DBLCLK  ; ユーザーがコントロールでマウス左ボタンをダブルクリック
                    Local $tinfo = DllStructCreate($tagNMMOUSE, $ilParam)
                    $hWndFrom = HWnd(DllStructGetData($tinfo, "hWndFrom"))
                    $iIDFrom = DllStructGetData($tinfo, "IDFrom")
                    $iCode = DllStructGetData($tinfo, "Code")
                    _DebugPrint("$NM_DBLCLK" & @LF & "--> hWndFrom:" & @TAB & $hWndFrom & @LF & _
                            "-->IDFrom:" & @TAB & $iIDFrom & @LF & _
                            "-->Code:" & @TAB & $iCode & @LF & _
                            "-->ItemSpec:" & @TAB & DllStructGetData($tinfo, "ItemSpec") & @LF & _
                            "-->ItemData:" & @TAB & DllStructGetData($tinfo, "ItemData") & @LF & _
                            "-->X:" & @TAB & DllStructGetData($tinfo, "X") & @LF & _
                            "-->Y:" & @TAB & DllStructGetData($tinfo, "Y") & @LF & _
                            "-->HitInfo:" & @TAB & DllStructGetData($tinfo, "HitInfo"))
                    Return TRUE ; マウスクリックが制御され、システムによるデフォルト処理が抑制されたことを表す
;~                  Return FALSE ; クリックに対するデフォルト処理を許可
                Case $NM_RCLICK  ; ユーザーがコントロールでマウス右ボタンをクリック
                    Local $tinfo = DllStructCreate($tagNMMOUSE, $ilParam)
                    $hWndFrom = HWnd(DllStructGetData($tinfo, "hWndFrom"))
                    $iIDFrom = DllStructGetData($tinfo, "IDFrom")
                    $iCode = DllStructGetData($tinfo, "Code")
                    _DebugPrint("$NM_RCLICK" & @LF & "--> hWndFrom:" & @TAB & $hWndFrom & @LF & _
                            "-->IDFrom:" & @TAB & $iIDFrom & @LF & _
                            "-->Code:" & @TAB & $iCode & @LF & _
                            "-->ItemSpec:" & @TAB & DllStructGetData($tinfo, "ItemSpec") & @LF & _
                            "-->ItemData:" & @TAB & DllStructGetData($tinfo, "ItemData") & @LF & _
                            "-->X:" & @TAB & DllStructGetData($tinfo, "X") & @LF & _
                            "-->Y:" & @TAB & DllStructGetData($tinfo, "Y") & @LF & _
                            "-->HitInfo:" & @TAB & DllStructGetData($tinfo, "HitInfo"))
                    Return TRUE ; マウスクリックが制御され、システムによるデフォルト処理が抑制されたことを表す
;~                  Return FALSE ; クリックに対するデフォルト処理を許可
                Case $NM_RDBLCLK  ; ユーザーがコントロールでマウス右ボタンをクリック
                    Local $tinfo = DllStructCreate($tagNMMOUSE, $ilParam)
                    $hWndFrom = HWnd(DllStructGetData($tinfo, "hWndFrom"))
                    $iIDFrom = DllStructGetData($tinfo, "IDFrom")
                    $iCode = DllStructGetData($tinfo, "Code")
                    _DebugPrint("$NM_RDBLCLK" & @LF & "--> hWndFrom:" & @TAB & $hWndFrom & @LF & _
                            "-->IDFrom:" & @TAB & $iIDFrom & @LF & _
                            "-->Code:" & @TAB & $iCode & @LF & _
                            "-->ItemSpec:" & @TAB & DllStructGetData($tinfo, "ItemSpec") & @LF & _
                            "-->ItemData:" & @TAB & DllStructGetData($tinfo, "ItemData") & @LF & _
                            "-->X:" & @TAB & DllStructGetData($tinfo, "X") & @LF & _
                            "-->Y:" & @TAB & DllStructGetData($tinfo, "Y") & @LF & _
                            "-->HitInfo:" & @TAB & DllStructGetData($tinfo, "HitInfo"))
                    Return TRUE ; マウスクリックが制御され、システムによるデフォルト処理が抑制されたことを表す
;~                  Return FALSE ; クリックに対するデフォルト処理を許可
                Case $SBN_SIMPLEMODECHANGE  ; シンプルモード変更
                    _DebugPrint("$SBN_SIMPLEMODECHANGE" & @LF & "--> hWndFrom:" & @TAB & $hWndFrom & @LF & _
                            "-->IDFrom:" & @TAB & $iIDFrom & @LF & _
                            "-->Code:" & @TAB & $iCode)
                    ; 返し値なし
            EndSwitch
    EndSwitch
    Return $GUI_RUNDEFMSG
EndFunc   ;==>WM_NOTIFY

Func _DebugPrint($s_text, $line = @ScriptLineNumber)
    ConsoleWrite( _
            "!===========================================================" & @LF & _
            "+======================================================" & @LF & _
            "-->Line(" & StringFormat("%04d", $line) & "):" & @TAB & $s_text & @LF & _
            "+======================================================" & @LF)
EndFunc   ;==>_DebugPrint