帮忙解释一下这个声明的作用
中午关于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 编辑 ] 第一个循环中读了两次按钮状态,因此每次读取占循环周期的1/2,也就是一半的时间判断关闭,另一半时间判断“确定”。第二个循环读一次存储。然后判断存储值,也许判断时间远远小于读取时间,所以就准确多了。这是我的理解,欢迎高手批评指正。 在这里就可以体现出变量的好处了吧。。。
不建议在循环当中大量的使用if then的。相同变量的完全可以改成下边这样的。
Switch GUIGetMsg()
Case -3
ExitLoop
Case $a
MsgBox(0,"","你按下了确定")
EndSwitch
建议在GUI循环当中用GUISetOnEvent模式。 呵呵,上面提供的IF THEN例子应该是我写的吧?因为怕CASE他没遇到过~,我是新手,看他样子应该也是,所以改成IF THEN了~ 原来如此,哈哈,太感谢大家了,学到不少啊:face (36):
页:
[1]