Функция GUICtrlSendMsg

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


GUICtrlSendMsg

Отправляет сообщение элементу

GUICtrlSendMsg ( controlID, msg , wParam, lParam )

Параметры

controlID Идентификатор элемента возвращаемый функцией GUICtrlCreate....
msg Тип сообщения посылаемого элементу, как определено в документации элементов окна.
wParam Первый параметр, посылаемый элементу.
lParam Второй параметр, посылаемый элементу.

Возвращаемое значение

Успех:Возвращает значение, возвращаемое SendMessage Windows API.
Ошибка:Возвращает 0.

Примечания

Эта функция позволяет передавать специальные сообщения Windows непосредственно элементу с помощью SendMessage API. Это позволяет получить специальные параметры элемента, недоступные обычной функцией GUICtrlRead() и функциями GUICtrlUpdate....

Параметры (wParam и lParam) могут быть целым числом или строкой.

GUICtrlSendMsg должны использоваться для сообщений , которые не имеют специальных типов возвращения. Для дополнительных сообщений, когда понадобится получить дополнительные данные, используйте GUICtrlRecvMsg().

См. также

GUICtrlRecvMsg, GUICtrlCreate..., GUICtrlUpdate..., GUIGetMsg, GUICtrlRead

Пример

#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