#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <array.au3>
Opt("GUIOnEventMode", 1)
;是这样,假设要获取3个动态生成的按钮的坐标,数字3比如从配置文件上读取,有可能是2,也可能是4
;所以不能提前声明
Dim $i,$Bt[10],$ctr1[4],$ctr2[4],$ctr3[4] ;像这样提前声明,万一是1000呢?又不能写成 Dim Assign("ctr"&$i,"[4]")
$Form1 = GUICreate("Form1", 700, 444, 150, 120)
GUISetOnEvent($GUI_EVENT_CLOSE, "CLOSEClicked")
For $i = 1 To 3
$Bt[$i] = GUICtrlCreateButton($i,248,$i*50+5,75, 25)
Next
For $i = 1 To 3
Assign("ctr"&$i,ControlGetPos("Form1","",$Bt[$i]))
Next
;数据将是 Assign("ctr"&$i,[$t])),也就是 每一个Pos的 $i 与按钮的$i 对应
;$t则是0-3,对应x,y,w,h
;总共可获取的变量是 4*3 ,即 12 个值
;通过指定$t变量值 和 $i 变量值,就能确定是哪一个按钮的坐标与大小了.
;在贴子的首页,有活动单元格的全部代码,单元格的坐标与大小是可调整的。
$ButtonA = GUICtrlCreateButton("点我", 504, 168, 75, 73)
GUICtrlSetOnEvent ($ButtonA, "DATA")
$Input1 = GUICtrlCreateInput("按钮数字", 488, 112, 81, 21)
$Input2 = GUICtrlCreateInput("坐标代码", 488, 144, 81, 21)
GUISetState(@SW_SHOW)
While 1
Sleep(1)
;_ArrayDisplay($ctr1)
WEnd
Func DATA()
$r1= GUICtrlRead ($Input1)
$r2= GUICtrlRead ($Input2)
;MsgBox(0,"",Assign("ctr"&$r1,"["& $r2 & "]"))
MsgBox(0,"",Assign("ctr"&1,"[0]")) ;弹出错误
;MsgBox(0,"",$ctr1[0]) ;取第1个按钮的X值,成功
EndFunc
Func CLOSEClicked()
GUIDelete($Form1)
Exit
EndFunc