Функция _GUICtrlStatusBar_Create

 ↑  ←  Описание функции


_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