#include <GUIConstantsEx.au3>
#include <GuiStatusBar.au3>
#include <WinAPI.au3>
#include <WindowsConstants.au3>

$Debug_SB = False ; Проверяет ClassName передаваемый в функции. Установите True и используйте дескриптор от другого элемента, чтобы увидеть как это работает

Global $iMemo

_Main()

Func _Main()

	Global $hGUI, $hStatus
	Global $aParts[3] = [75, 150, -1]

	; Создаёт GUI
	$hGUI = GUICreate("StatusBar - Получает длину текста (Ex)", 400, 300)
	$hStatus = _GUICtrlStatusBar_Create ($hGUI, $SBT_NOBORDERS)

	; Создаёт элемент для заметок
	$iMemo = GUICtrlCreateEdit("", 2, 2, 396, 274, $WS_VSCROLL)
	GUICtrlSetFont($iMemo, 9, 400, 0, "Courier New")
	GUISetState()

	; Устанавливает части
	_GUICtrlStatusBar_SetParts ($hStatus, $aParts)
	_GUICtrlStatusBar_SetText ($hStatus, "Часть 1", 0, $SBT_POPOUT)
	_GUICtrlStatusBar_SetText ($hStatus, "Часть 2", 1, $SBT_NOBORDERS)
	_GUICtrlStatusBar_SetText ($hStatus, "Часть 3", 2, $SBT_NOTABPARSING)


	; Получает информацию текста
	For $iI = 0 To _GUICtrlStatusBar_GetCount ($hStatus) - 1
		MemoWrite("Часть " & $iI & " флаги текста: " & _GUICtrlStatusBar_GetTextFlags ($hStatus, $iI))
		MemoWrite("Часть " & $iI & " длина текста: " & _GUICtrlStatusBar_GetTextLength ($hStatus, $iI))
		MemoWrite("Часть " & $iI & " длина текста: 0x" & Hex(_GUICtrlStatusBar_GetTextLengthEx ($hStatus, $iI)))
		MemoWrite()
	Next

	; Цикл выполняется, пока окно не будет закрыто
	Do
	Until GUIGetMsg() = $GUI_EVENT_CLOSE
	GUIDelete()
EndFunc   ;==>_Main

; Записывает строку в элемент для заметок
Func MemoWrite($sMessage = "")
	GUICtrlSetData($iMemo, $sMessage & @CRLF, 1)
EndFunc   ;==>MemoWrite