#include <GUIConstantsEx.au3>
#include <EditConstants.au3>
#include <ProgressConstants.au3>

Example1()
Example2()

Func Example1()
	Local $hGui, $iEdit, $msg, $n, $iNumLine
	$hGui = GUICreate("GUICtrlSendMsg") ; Создаёт окно в центре экрана

	$iEdit = GUICtrlCreateEdit("Строка 0", 10, 10)
	GUICtrlCreateButton("Номер строки", 100, 180, 110)
	GUISetState()

	For $n = 1 To 5
		GUICtrlSetData($iEdit, @CRLF & "Строка " & $n, 1)
	Next

	; Запускается цикл опроса GUI до тех пор пока окно не будет закрыто
	Do
		$msg = GUIGetMsg()
		If $msg > 0 Then
			$n = GUICtrlSendMsg($iEdit, $EM_LINEINDEX, -1, 0)
			$iNumLine = GUICtrlSendMsg($iEdit, $EM_LINEFROMCHAR, $n, 0)
			GUICtrlSetState($iEdit, $GUI_FOCUS) ; Устанавливает фокус

			MsgBox(0, "Строка, в которой текстовый курсор", $iNumLine, 0, $hGui)
		EndIf
	Until $msg = $GUI_EVENT_CLOSE
	GUIDelete($hGui)
EndFunc

Func Example2()
	Local $iProgress, $iStart, $iStop
	GUICreate("Прогресс в виде бегунка", 290, 90, -1, -1) ; Пример запуска и остановки бегунка прогресса.
	$iProgress = GUICtrlCreateProgress(10, 10, 270, 20, $PBS_MARQUEE)
	$iStart = GUICtrlCreateButton("&Старт", 10, 60, 70, 25)
	$iStop = GUICtrlCreateButton("Стоп", 85, 60, 70, 25)

	GUISetState(@SW_SHOW)

	While 1
		Switch GUIGetMsg()
			Case $GUI_EVENT_CLOSE
				ExitLoop

			Case $iStart
				GUICtrlSendMsg($iProgress, $PBM_SETMARQUEE, 1, 50) ; Высылает сообщение $PBM_SETMARQUEE и wParam = 1 для запуска бегунка.

			Case $iStop
				GUICtrlSendMsg($iProgress, $PBM_SETMARQUEE, 0, 50) ; Высылает сообщение $PBM_SETMARQUEE и wParam = 0 для остановки бегунка.

		EndSwitch
	WEnd
EndFunc