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

GUI窗口不能关闭,请高手帮忙指教

[复制链接]
发表于 2009-5-25 21:21:20 | 显示全部楼层 |阅读模式
本帖最后由 17911 于 2009-5-26 12:17 编辑

本人菜鸟,在脚本里加入AdlibEnable调用自定义函数ddd()后窗口不能正常关闭了,点关闭x没有反应,请帮忙解决一下
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <string.au3>
$Form1 = GUICreate("", 190, 240)
$Edit1 = GUICtrlCreateEdit("", 0, 0, 190, 190, $ES_WANTRETURN)
$Button1 = GUICtrlCreateButton("显示", 10, 200, 150, 30)

GUISetState(@SW_SHOW)
AdlibEnable("ddd",10000)
While 1
        $nMsg = GUIGetMsg()
        Switch $nMsg
        Case $GUI_EVENT_CLOSE
        Exit
                Case $Button1
                        $a = GUICtrlRead($Edit1)
                        $b = StringLen($a)
                        For $i = 1 To Round($b / 30)
                                If $i = 1 Then
                                        $a = _StringInsert($a, @CR, $i * 30)
                                Else
                                        $a = _StringInsert($a, @CR, $i * 30 + ($i - 1))
                                EndIf
                        Next
                        MsgBox(0, "", $a)
                                               
        EndSwitch
        WEnd
        Func ddd()
                Dim $i
                $i=5
                for $i=5 to $i^1000 Step 12
         MsgBox(0+64,"你好","请注意休息,你已经上网"&$i&"秒",2)
                 Sleep(10000)
        Next
EndFunc
发表于 2009-5-25 21:53:46 | 显示全部楼层
楼主的程序有问题 FUNC 不应该写在WHILE里面
AdlibEnable并不是真正的多线程 他是暂停掉程序去运行其设置的FUNC里的内容 如果这个FUNC里有比较大的循环就会导致程序不能成功发送关闭的消息 楼主的提示可以考虑换个方式 那个循环的美看懂什么意思
 楼主| 发表于 2009-5-25 22:01:04 | 显示全部楼层
本帖最后由 17911 于 2009-5-25 22:04 编辑
楼主的程序有问题 FUNC 不应该写在WHILE里面
AdlibEnable并不是真正的多线程 他是暂停掉程序去运行其设置的FUNC里的内容 如果这个FUNC里有比较大的循环就会导致程序不能成功发送关闭的消息 楼主的提示可以考虑换个 ...

就是每隔10秒钟弹出提示消息框:请注意休息,你已经上网多少秒,步进值为12,考虑停顿12秒,惭愧,没想出在循环中结束时间设置无限大怎么写就用临时用$i^1000 尝试使用判断句不用循环没成功
发表于 2009-5-25 22:40:52 | 显示全部楼层
那你把这个FUNC设置成12秒显示一次 每次弹出一个MSGBOX不就可以了吗 何必去循环
 楼主| 发表于 2009-5-25 23:36:32 | 显示全部楼层
本帖最后由 17911 于 2009-5-26 12:17 编辑
那你把这个FUNC设置成12秒显示一次 每次弹出一个MSGBOX不就可以了吗 何必去循环

呵呵,开始只是为了练习就设置隔10秒弹出一次消息框而且持续下去就考虑的复杂了,就像软件提示注册一样无限循环,自己搞定了
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-5-5 20:03 , Processed in 0.070616 second(s), 19 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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