_GUICtrlStatusBar_Create
Создаёт строку состояния
#include <GuiStatusBar.au3>
_GUICtrlStatusBar_Create($hWnd [, $vPartEdge = -1 [, $vPartText = "" [, $iStyles = -1 [, $iExStyles = 0x00000000]]]])
Параметры
$hWnd | Дескриптор родительского окна |
$vPartEdge |
[необязательный] Ширина части или частей, для более чем 1-ой части, передавая массив (отсчёт от 0) следующего формата: $vPartEdge[0] - Правая граница 1-ой части $vPartEdge[1] - Правая граница 2-ой части $vPartEdge[n] - Правая граница n-ой части |
$vPartText |
[необязательный] Текст части или частей, для более чем 1-ой части, передавая массив (отсчёт от 0) следующего формата: $vPartText[0] - Первая часть $vPartText[1] - Вторая часть $vPartText[n] - Последняя часть |
$iStyles |
[необязательный] Стиль элемента: $SBARS_SIZEGRIP - строка состояния содержит элемент захвата для изменения размера справа в конце. $SBARS_TOOLTIPS - строка состояния будет иметь всплывающие подсказки |
Принудительный стиль: $WS_CHILD, $WS_VISIBLE | |
$iExStyles |
[необязательный] Расширенный стиль элемента |
Возвращаемое значение
Успех: | Возвращает дескриптор элемента |
Ошибка: | Возвращает 0 |
Примечания
Если используется GUICtrlCreateMenu, то используйте _GUICtrlStatusBar_Create после GUICtrlCreateMenuСм. также
_GUICtrlStatusBar_DestroyПример
#include <GUIConstantsEx.au3>
#include <GuiStatusBar.au3>
#include <ComboConstants.au3>
#include <EditConstants.au3>
#include <WindowsConstants.au3>
$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("(Пример 1) Создание StatusBar", 400, 300)
;===============================================================================
; по умолчанию одна часть, без текста
$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("Ширина горизонтальной границы: " & _GUICtrlStatusBar_GetBordersHorz ($hStatus))
MemoWrite("Ширина вертикальной границы..: " & _GUICtrlStatusBar_GetBordersVert ($hStatus))
MemoWrite("Ширина между прямоугольниками: " & _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("(Пример 2) Создание StatusBar", 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 & "ширина части массива из 3 элементов" & @CRLF)
GUISetState()
GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY")
; Получает размер границ
MemoWrite("Ширина горизонтальной границы: " & _GUICtrlStatusBar_GetBordersHorz ($hStatus))
MemoWrite("Ширина вертикальной границы..: " & _GUICtrlStatusBar_GetBordersVert ($hStatus))
MemoWrite("Ширина между прямоугольниками: " & _GUICtrlStatusBar_GetBordersRect ($hStatus))
; Цикл выполняется, пока окно не будет закрыто
Do
Until GUIGetMsg() = $GUI_EVENT_CLOSE
GUISetState(@SW_ENABLE, $MainGUI)
GUIDelete($hGUI)
EndFunc ;==>Example2
Func Example3()
Local $hGUI
Local $aText[3] = ["Левое выравнивание", @TAB & "Центр", @TAB & @TAB & "Правое выравнивание"]
Local $aParts[3] = [100, 175, -1]
; Создаёт GUI
$hGUI = GUICreate("(Пример 3) Создание StatusBar", 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 & "только дескриптор," & @CRLF & _
@TAB & "ширина части массива из 3 элементов" & @CRLF & _
@TAB & "текст части массива из 3 элементов" & @CRLF)
GUISetState()
GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY")
; Получает размер границ
MemoWrite("Ширина горизонтальной границы: " & _GUICtrlStatusBar_GetBordersHorz ($hStatus))
MemoWrite("Ширина вертикальной границы..: " & _GUICtrlStatusBar_GetBordersVert ($hStatus))
MemoWrite("Ширина между прямоугольниками: " & _GUICtrlStatusBar_GetBordersRect ($hStatus))
; Цикл выполняется, пока окно не будет закрыто
Do
Until GUIGetMsg() = $GUI_EVENT_CLOSE
GUISetState(@SW_ENABLE, $MainGUI)
GUIDelete($hGUI)
EndFunc ;==>Example3
Func Example4()
Local $hGUI
Local $aText[3] = ["Левое выравнивание", @TAB & "Центр", @TAB & @TAB & "Правое выравнивание"]
; Создаёт GUI
$hGUI = GUICreate("(Пример 4) Создание StatusBar", 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 & "только дескриптор," & @CRLF & _
@TAB & "part width number" & @CRLF & _
@TAB & "текст части массива из 3 элементов" & @CRLF)
GUISetState()
GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY")
; Получает размер границ
MemoWrite("Ширина горизонтальной границы: " & _GUICtrlStatusBar_GetBordersHorz ($hStatus))
MemoWrite("Ширина вертикальной границы..: " & _GUICtrlStatusBar_GetBordersVert ($hStatus))
MemoWrite("Ширина между прямоугольниками: " & _GUICtrlStatusBar_GetBordersRect ($hStatus))
; Цикл выполняется, пока окно не будет закрыто
Do
Until GUIGetMsg() = $GUI_EVENT_CLOSE
GUISetState(@SW_ENABLE, $MainGUI)
GUIDelete($hGUI)
EndFunc ;==>Example4
Func Example5()
Local $hGUI
Local $aText[3] = ["Левое выравнивание", @TAB & "Центр", @TAB & @TAB & "Правое выравнивание"]
Local $aParts[2] = [100, 175]
; Создаёт GUI
$hGUI = GUICreate("(Пример 5) Создание StatusBar", 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 & "только дескриптор," & @CRLF & _
@TAB & "ширина части массива из 2 элементов" & @CRLF & _
@TAB & "текст части массива из 3 элементов" & @CRLF)
GUISetState()
GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY")
; Получает размер границ
MemoWrite("Ширина горизонтальной границы: " & _GUICtrlStatusBar_GetBordersHorz ($hStatus))
MemoWrite("Ширина вертикальной границы..: " & _GUICtrlStatusBar_GetBordersVert ($hStatus))
MemoWrite("Ширина между прямоугольниками: " & _GUICtrlStatusBar_GetBordersRect ($hStatus))
; Цикл выполняется, пока окно не будет закрыто
Do
Until GUIGetMsg() = $GUI_EVENT_CLOSE
GUISetState(@SW_ENABLE, $MainGUI)
GUIDelete($hGUI)
EndFunc ;==>Example5
Func Example6()
Local $hGUI
Local $aText[2] = ["Левое выравнивание", @TAB & "Центр"]
Local $aParts[3] = [100, 175, -1]
; Создаёт GUI
$hGUI = GUICreate("(Пример 6) Создание StatusBar", 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 & "только дескриптор," & @CRLF & _
@TAB & "ширина части массива из 3 элементов" & @CRLF & _
@TAB & "текст части массива из 2 элементов" & @CRLF)
GUISetState()
GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY")
; Получает размер границ
MemoWrite("Ширина горизонтальной границы: " & _GUICtrlStatusBar_GetBordersHorz ($hStatus))
MemoWrite("Ширина вертикальной границы..: " & _GUICtrlStatusBar_GetBordersVert ($hStatus))
MemoWrite("Ширина между прямоугольниками: " & _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)
#forceref $hWnd, $iMsg, $iwParam
Local $hWndFrom, $iIDFrom, $iCode, $tNMHDR
$tNMHDR = DllStructCreate($tagNMHDR, $ilParam)
$hWndFrom = HWnd(DllStructGetData($tNMHDR, "hWndFrom"))
$iIDFrom = DllStructGetData($tNMHDR, "IDFrom")
$iCode = DllStructGetData($tNMHDR, "Code")
Local $tinfo
Switch $hWndFrom
Case $hStatus
Switch $iCode
Case $NM_CLICK ; Пользователь кликает левую кнопку мыши на элементе
$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 ; Пользователь сделал двойной клик левой кнопкой мыши на элементе
$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 ; Пользователь кликает правую кнопку мыши на элементе
$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 ; Пользователь сделал двойной клик правой кнопкой мыши на элементе
$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 ; Simple mode changes
_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 & _
"-->Строка(" & StringFormat("%04d", $line) & "):" & @TAB & $s_text & @LF & _
"+======================================================" & @LF)
EndFunc ;==>_DebugPrint