maolimin256 发表于 2012-3-1 19:10:40

用GUICtrlCreateButton创建的按钮,点击时有时无反应或反应很慢,求解!!

部份代码如下:
$Button1 = GUICtrlCreateButton("编辑TVOD节目单", 50, 300, 140, 30)
...
While 1
       $nMsg = GUIGetMsg()
      Switch $nMsg
                Case $GUI_EVENT_CLOSE
                                      Exit
                                Case $Combo1
                     ;MsgBox(0,"",GUICtrlRead($Combo1))
                                       $tmp_str=GUICtrlRead($Combo1)
                                       $var1 = IniReadSection("456.ini", $tmp_str)
                                       If @error <> 1 Then
                                               GUICtrlCreateInput( $var1, 150,60,200,20)
                                               $channel_id_input=GUICtrlCreateInput( $var1, 150,90,200,20)
                                               ;MsgBox(4096, "channel_id", $channel_id)
                                       Else
                                               MsgBox(4096, "TVOD频道", "没有找到")
                                       EndIf
                                Case $Button1
                                       ;MsgBox(4096, "","hello!")       
                                       tvodedit()
                                Case $Button2
                                       tvodload()
                                Case $Button3
                                      Exit

      EndSwitch
WEnd
....


点击$Button1后有时正常调用函数tvodedit(),有时无反应或反应很慢,新手,初步接触autoit,请大家帮忙看看怎么回事,谢谢!

半芯竹 发表于 2012-3-1 23:44:27

回复 1# maolimin256


    你把自定义的函数发上来看

zldfsz 发表于 2012-3-2 00:36:41

这不是GUICtrlCreateButton的问题,在消息模式下, 只有频繁调用 GUIGetMsg 函数才有可能接收到消息,
因此您必须确保每秒时间内多次调用该函数,否则您的 GUI 将无法响应消息.
,在消息循环模式下如果循环的周期比较长,在你点击的瞬间如果程序没有在执行$nMsg = GUIGetMsg(),就会出现点击按钮无反应的现象,所以消息循环模式的循环不能太长,更要避免在循环里用sleep的函数。与之对应的是OnEvent模式,在OnEvent模式下, 脚本并不需要频繁地要求 GUI 检查是否有任何事件发生(并根据返回信息处理事件),而是仅当某个事件发生时, GUI 才临时性暂停脚本, 并调用一个用户预定义的函数来处理该事件.
建议看看帮助文件的“GUI参考”一节,有关GUI消息循环模式和GUI事件模式的介绍和例子

netegg 发表于 2012-3-2 00:54:13

{:face (411):}回复 3# zldfsz


{:face (306):}楼主走前辈的路没错的,蹊径该走的早就有人都走遍了

maolimin256 发表于 2012-3-2 10:32:51

多谢各位........换成OnEvent模式后试了下,还是一样的情况,发现只有点击按钮右边一部分位置才会响应(焦点问题?????).......这个与自定义的函数也没关系,因为最后把整个按钮移了个位置就很好用了!!....

afan 发表于 2012-3-2 12:45:21

多谢各位........换成OnEvent模式后试了下,还是一样的情况,发现只有点击按钮右边一部分位置才会响应(焦点 ...
maolimin256 发表于 2012-3-2 10:32 http://www.autoitx.com/images/common/back.gif


    按钮左边有其它控件,该控件宽度过宽,覆盖了部分按钮

zldfsz 发表于 2012-3-2 15:21:08

赞同版主的说法

user3000 发表于 2012-3-3 02:58:27

恭喜楼主, 实践出真知!

shuangsexing 发表于 2012-3-5 15:53:12

少了部分的代码
页: [1]
查看完整版本: 用GUICtrlCreateButton创建的按钮,点击时有时无反应或反应很慢,求解!!