返回列表 发帖

[GUI管理] 如何用自定义按钮而不是关闭按钮跳出循环

本帖最后由 lyf362345 于 2017-10-11 00:33 编辑

搜索了下 目前能用点击关闭跳出来了, 但是没找到用自定义按钮跳出的方式

想做到的结果是 点击开始按钮 开始循环, 点击关闭 结束循环

参考这个 已经解决 http://autoitx.com/viewthread.php?tid=37727

但是有个小问题就是 如果 sleep 的时间过久, 比如5秒, 那么点击停止就会延迟5秒才会生效, 这个怎么弄呢

回复 1# lyf362345


    你那链接 不是 写得好详细了么? 用注册 消息
  1. GUICreate('test', 200, 100)
  2. $button1 = GUICtrlCreateButton('start', 50, 50)
  3. $button2 = GUICtrlCreateButton('stop', 150, 50)
  4. GUISetState()
  5. GUIRegisterMsg(0x111, '_WM_COMMAND')

  6. Dim $a=1
  7. While 1
  8.         $msg = GUIGetMsg()
  9.         Switch $msg
  10.                 Case -3
  11.                         Exit
  12.                 Case $button1
  13.                         test()
  14.                 Case $button2
  15.                         
  16.         EndSwitch
  17. WEnd

  18. Func Button_2()
  19. exit MsgBox(0, '', 'a='&$a)
  20. EndFunc

  21. Func test()
  22. For $i=1 to 999999
  23. sleep(999)
  24. $a+=1
  25. Next
  26. EndFunc   ;==>test


  27. Func _WM_COMMAND($hWnd, $msg, $wParam, $lParam)
  28.         If BitAND($wParam, 0x0000FFFF) = $button2 Then Button_2()
  29. EndFunc   ;==>_WM_COMMAND
复制代码

TOP

本帖最后由 lin6051 于 2017-10-11 20:18 编辑

  1. GUICreate('test', 200, 100)

  2. $button1 = GUICtrlCreateButton('start', 50, 50)

  3. $button2 = GUICtrlCreateButton('stop', 150, 50)


  4. GUIRegisterMsg(0x111, '_WM_COMMAND')

  5. GUIRegisterMsg(0x112, '_WM_SYSCOMMAND')

  6.  

  7. Dim $a = 1


  8.         $msg = GUIGetMsg()

  9.         Switch $msg

  10.                 Case $button1

  11.                         test()

  12.         EndSwitch


  13.  

  14. Func Button_2()

  15.         Exit MsgBox(0, '', 'a=' & $a)

  16. EndFunc   ;==>Button_2

  17.  

  18. Func test()

  19.         For $i = 1 To 999999

  20.                 Sleep(999)

  21.                 $a += 1

  22.         Next

  23. EndFunc   ;==>test

  24.  

  25.  

  26. Func _WM_COMMAND($hWnd, $msg, $wParam, $lParam)

  27.         Switch BitAND($wParam, 0x0000FFFF)

  28.                 Case $button2

  29.                         Button_2()

  30.         EndSwitch

  31. EndFunc   ;==>_WM_COMMAND

  32.  

  33.  

  34. Func _WM_SYSCOMMAND($hWnd, $msg, $wParam, $lParam)

  35.         Switch $wParam

  36.                 Case 0xF060

  37.                         Button_2()

  38.         EndSwitch

  39. EndFunc   ;==>_WM_SYSCOMMAND

复制代码 高亮切换

TOP

回复 2# lin6051


    感谢, 我研究下看看

TOP

回复 3# lin6051


    谢谢

TOP

回复 3# lin6051


    我研究下看看

TOP

返回列表