找回密码
 加入
搜索
查看: 1192|回复: 6

以数组做句柄的问题

[复制链接]
发表于 2009-8-10 20:51:10 | 显示全部楼层 |阅读模式
本帖最后由 omegabomb 于 2009-8-11 08:17 编辑

比如我有100个按钮,Handle是$Button[1]到$Button[100]
我又有100个文件路径,Handle是$Path[1]到$Path[100]
那我想实现按第一个按钮,就执行ShellExecute($Path[1]),以此类推。

那我现在的方法是列出所有的:
case $Button[1]
        ShellExecute($Path[1])
case $Button[2]
        ShellExecute($Path[2])
......
case $Button[100]
        ShellExecute($Path[100])

感觉很累赘,有没有好点的方法,按哪个按钮,就读取到是什么下标,然后以那个下标执行对应的Path
发表于 2009-8-10 21:04:59 | 显示全部楼层
本帖最后由 pusofalse 于 2009-8-10 21:07 编辑
$hGUI = GUICreate("", 550, 300)
Dim $aButton[11] =[10], $iPos = 10, $aPath[11] = [10]

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
 楼主| 发表于 2009-8-10 21:24:46 | 显示全部楼层
$iMsg = guiGetMsg()
这个返回值不是句柄或者$GUI_EVENT_事件信息吗?为什么下面是和数字比较呢?
发表于 2009-8-10 21:35:20 | 显示全部楼层
Re 3#:
你可以在适当地方加上Msgbox(0, $iMsg, $GUI_EVENT_CLOSE)或者Msgbox(0, $iMsg, $aButton[1]) ,看下$iMsg的值是怎样的。
 楼主| 发表于 2009-8-10 22:30:34 | 显示全部楼层
我试了,确实输出为数字,但并没有搞清到底是如何排序每个控件和数字之间的关系。
我在帮助里查到:“当某个控件被点击或该控件有其它变化时将发送控件事件。这些事件代码都是正数并且关联发送事件消息的控件ID。”
不知控件ID和数字之间的关系是怎么计算的?
发表于 2009-8-10 22:41:23 | 显示全部楼层
GUICtrlCreate*函数创建的控件ID都是从3开始累加的。
上例中,$aButton[1]的ID是3, $aButton[2]是4,依此。。。
 楼主| 发表于 2009-8-10 23:58:10 | 显示全部楼层
多谢解惑,又让我学到了一招
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-5-3 05:50 , Processed in 0.071113 second(s), 19 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表