函数参考


GUICtrlRecvMsg

向指定控件发送消息并获取返回的 lParam 的信息.(获取控件消息)

GUICtrlRecvMsg ( 控件ID , msg [, wParam [, lParam类型]] )

参数

控件ID 控件标识符(控件ID),可由 GUICtrlCreate... 函数的返回值获得.
msg 要发送到控件的消息类型,在 Windows 的控件文档中有定义.
wParam [可选参数] 要发送到控件的第一个整型参数.
lParamType [可选参数] 定义将返回的 lParam 的类型:0(默认)表示 wParam 和 lParam,1 表示 lParam 字符串,2 表示 lParam RECT 数据结构.

返回值

成功: 返回 SendMessage(Windows API) 的返回值.
失败: 返回 0.

注意/说明

本函数允许我们使用 SendMessage(API 函数) 来把某些特殊的 Windows 消息直接发送到控件上.它可以用来启用某些特殊的控件功能,而这些功能往往是简单的 GUICtrlRead() 和 GUICtrlSet...() 函数无法实现的.

若在调用本函数时未指定 wParam 和 lParam类型 这两个参数则函数将返回一个含有两个元素的数组 (LPwParam, LPlParam).

若指定了返回值为 RECT 则以含有四个元素的数组的形式返回(左侧, 上方, 右侧, 下方).

相关

GUICtrlSendMsg, GUICtrlUpdate..., GUIGetMsg, GUICtrlRead

示例/演示


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

GUICreate("My GUI")  ; 创建一个居中显示的 GUI 窗口

Local $nEdit = GUICtrlCreateEdit("line 0", 10, 10)
GUICtrlCreateButton("Ok", 20, 200, 50)

GUISetState()

For $n = 1 To 5
    GUICtrlSetData($nEdit, @CRLF & "line " & $n)
Next


; 运行界面,直到窗口被关闭
Do
    Local $msg = GUIGetMsg()
    If $msg > 0 Then
        Local $a = GUICtrlRecvMsg($nEdit, $EM_GETSEL)
        GUICtrlSetState($nEdit, $GUI_FOCUS) ; set focus back on edit control

        ; will display the wParam and lParam values return by the control
        MsgBox(4096, "Current selection", StringFormat("start=%d end=%d", $a[0], $a[1]))
    EndIf
Until $msg = $GUI_EVENT_CLOSE