以数组做句柄的问题
本帖最后由 omegabomb 于 2009-8-11 08:17 编辑比如我有100个按钮,Handle是$Button到$Button
我又有100个文件路径,Handle是$Path到$Path
那我想实现按第一个按钮,就执行ShellExecute($Path),以此类推。
那我现在的方法是列出所有的:
case $Button
ShellExecute($Path)
case $Button
ShellExecute($Path)
......
case $Button
ShellExecute($Path)
感觉很累赘,有没有好点的方法,按哪个按钮,就读取到是什么下标,然后以那个下标执行对应的Path 本帖最后由 pusofalse 于 2009-8-10 21:07 编辑
$hGUI = GUICreate("", 550, 300)
Dim $aButton =, $iPos = 10, $aPath =
GUISetState()
For $i = 1 to 10
$aButton[$i] = GUICtrlCreateButton("Btn " & $i, $iPos, 20, 40, 20)
$aPath[$i] = "c:\" & $i & ".txt"
$iPos += 55
Next
Do
$iMsg = guiGetMsg()
If $iMsg < 3 or $iMsg > 12 Then ContinueLoop
If $iMsg = $aButton[$iMsg - 2] Then
Msgbox(0, '', $aPath[$iMsg - 2])
EndIf
Until $iMsg = -3 $iMsg = guiGetMsg()
这个返回值不是句柄或者$GUI_EVENT_事件信息吗?为什么下面是和数字比较呢? Re 3#:
你可以在适当地方加上Msgbox(0, $iMsg, $GUI_EVENT_CLOSE)或者Msgbox(0, $iMsg, $aButton) ,看下$iMsg的值是怎样的。 我试了,确实输出为数字,但并没有搞清到底是如何排序每个控件和数字之间的关系。
我在帮助里查到:“当某个控件被点击或该控件有其它变化时将发送控件事件。这些事件代码都是正数并且关联发送事件消息的控件ID。”
不知控件ID和数字之间的关系是怎么计算的? GUICtrlCreate*函数创建的控件ID都是从3开始累加的。
上例中,$aButton的ID是3, $aButton是4,依此。。。 多谢解惑,又让我学到了一招
页:
[1]