Send a message to a control and retrieve information in lParam.
GUICtrlRecvMsg ( controlID , msg [, wParam [, lParamType]] )
controlID | The control identifier (controlID) as returned by a GUICtrlCreate...() function, or -1 for the last created control. |
msg | type of message to be send to the control as defined in the Windows controls documentation. |
wParam | [optional] An integer first param to be send to the control. |
lParamType | [optional] Define the type of lParam that will be returned: 0 (default) for wParam and lParam, 1 for lParam String, 2 for lParam RECT struct. |
Success: | the value returned by the SendMessage Windows API. |
Failure: | 0. |
This function allows the sending of special Windows messages directly to the control using the SendMessage API. It is used to enable special control features not available with the simple GUICtrlRead() and GUICtrlUpdate... range of functions.
If the wParam and lParamType parameters are not specified then an array of two elements is returned (LPwParam, LPlParam).
The RECT is returned in an array of 4 elements (Left, Top, Right, Bottom).
GUICtrlSendMsg, GUICtrlUpdate...
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <MsgBoxConstants.au3>
Example()
Func Example()
; Create a GUI with an edit control.
Local $hGUI = GUICreate("Example")
Local $idEdit = GUICtrlCreateEdit("Line 0" & @CRLF, 0, 0, 400, 350)
Local $idButton_Ok = GUICtrlCreateButton("OK", 310, 370, 85, 25)
; Set data of the edit control.
For $i = 1 To 25
GUICtrlSetData($idEdit, "Line " & $i & @CRLF, 1)
Next
; Set focus to the edit control.
GUICtrlSetState($idEdit, $GUI_FOCUS)
; Display the GUI.
GUISetState(@SW_SHOW, $hGUI)
; Initialize the variable $aCtrlRecvMsg for storing the value returned by GUICtrlRecvMsg.
Local $aCtrlRecvMsg = 0
; Loop until the user exits.
While 1
Switch GUIGetMsg()
Case $GUI_EVENT_CLOSE
ExitLoop
Case $idButton_Ok
; Send the message EM_GETSEL, to retrieve the current selection of the edit control.
$aCtrlRecvMsg = GUICtrlRecvMsg($idEdit, $EM_GETSEL)
; Set focus to the edit control.
GUICtrlSetState($idEdit, $GUI_FOCUS)
; If GUICtrlRecvMsg returned the value of 0, then an error occurred otherwise display the contents of the array.
If $aCtrlRecvMsg = 0 Then
MsgBox($MB_SYSTEMMODAL, "", "An error occurred. The value returned was - " & $aCtrlRecvMsg)
Else
MsgBox($MB_SYSTEMMODAL, "", "Start: " & $aCtrlRecvMsg[0] & " End: " & $aCtrlRecvMsg[1])
EndIf
EndSwitch
WEnd
; Delete the previous GUI and all controls.
GUIDelete($hGUI)
EndFunc ;==>Example