ステータスバーを作成します。
#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