找回密码
 加入
搜索
查看: 2774|回复: 4

帮忙解释一下这个声明的作用

[复制链接]
发表于 2008-7-8 17:06:58 | 显示全部楼层 |阅读模式
中午关于GUI按下按钮的问题解决了,不过看了友友给的方法还是有一点不明白的地方,下面两个脚本只少了一个声明但运行起来却有差别,是什么原因呢?

第一个脚本:

GUICreate("我的第一个窗口")
$a=GUICtrlCreateButton("确定",-1,-1)
GUISetState(@SW_SHOW)
While 1
If GUIGetMsg()=-3 Then
ExitLoop
EndIf
If GUIGetMsg()=$a Then
MsgBox(0,"","你按下了确定")
EndIf
WEnd

第二个脚本:

GUICreate("我的第一个窗口")
$a=GUICtrlCreateButton("确定",-1,-1)
GUISetState(@SW_SHOW)
While 1
$msg=GUIGetMsg()
If $msg=$a Then
MsgBox(0,"","你按下了确定")
EndIf
If $msg=-3 Then
ExitLoop
EndIf
WEnd

第一个脚本当点击"确定"按钮时经常没弹出MsgBox(0,"","你按下了确定")这个窗口,而第二个每点击一下就会弹出,这两个窗口只相差了一个$msg=GUIGetMsg()声明,为什么就会产生这个差别,知道的朋友能不能解释一下,谢谢了

[ 本帖最后由 雨滴的孤独 于 2008-7-11 21:26 编辑 ]
发表于 2008-7-8 20:45:12 | 显示全部楼层
第一个循环中读了两次按钮状态,因此每次读取占循环周期的1/2,也就是一半的时间判断关闭,另一半时间判断“确定”。第二个循环读一次存储。然后判断存储值,也许判断时间远远小于读取时间,所以就准确多了。这是我的理解,欢迎高手批评指正。
发表于 2008-7-10 10:06:50 | 显示全部楼层
在这里就可以体现出变量的好处了吧。。。

不建议在循环当中大量的使用if then的。相同变量的完全可以改成下边这样的。

Switch GUIGetMsg()
       
        Case -3
                ExitLoop
        Case $a
                MsgBox(0,"","你按下了确定")
EndSwitch

建议在GUI循环当中用GUISetOnEvent模式。
发表于 2008-7-10 12:12:39 | 显示全部楼层
呵呵,上面提供的IF THEN例子应该是我写的吧?因为怕CASE他没遇到过~,我是新手,看他样子应该也是,所以改成IF THEN了~
 楼主| 发表于 2008-7-11 21:21:01 | 显示全部楼层
原来如此,哈哈,太感谢大家了,学到不少啊
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-5-17 19:13 , Processed in 0.075210 second(s), 20 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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