找回密码  加入

AUTOIT CN

搜索
查看: 326|回复: 9

[AU3基础] 【已解决】关于新建创口中按钮出错的问题

[复制链接]
发表于 2020-2-12 22:33:03 | 显示全部楼层 |阅读模式
本帖最后由 anythinging 于 2020-2-18 17:11 编辑
  1. 各位大师,想请教下,我想通过一个窗口控制显示和隐藏另一个窗口,如果使用func 现创建一个新窗口的话(不用func直接创建窗口2是正常的),新窗口中的按钮会出现错误,请教如何解决这个问题。感谢指点!
复制代码
  1. Global $form1,$ButtonA1,$ButtonA2,$form2,$ButtonB1,$ButtonB2

  2. $form1 = GUICreate('1',200,200,800,400)
  3. $ButtonA1 = GUICtrlCreateButton('显示窗口2',20,80,100,20)
  4. $ButtonA2 = GUICtrlCreateButton('隐藏窗口2',20,110,100,20)
  5. GUISetState(@SW_SHOW,$form1)


  6. Func _CreatForm2()
  7. $form2 = GUICreate('2',200,200,1200,400)
  8. $ButtonB1 = GUICtrlCreateButton('B1',20,80,100,20)
  9. $ButtonB2 = GUICtrlCreateButton('B2',20,80,100,20)
  10. GUISetState(@SW_SHOW,$form2)
  11. EndFunc




  12. While 1
  13. $msg=GUIGetMsg()
  14. Switch $msg
  15. Case -3
  16. Exit
  17. Case $ButtonA1
  18. _CreatForm2()
  19. Case $ButtonA2
  20. GUIDelete($form2)

  21. Case $ButtonB1
  22. MsgBox(262144,'','B1')
  23. Case $ButtonB2
  24. MsgBox(262144,'','B2')

  25. EndSwitch
  26. Sleep(50)
  27. WEnd
复制代码

发表于 2020-2-12 22:49:10 | 显示全部楼层
没有代码全靠猜
 楼主| 发表于 2020-2-12 23:23:15 | 显示全部楼层
有时候论坛会巨慢无比
发表于 2020-2-13 00:56:44 | 显示全部楼层
[au3]
Global $form1, $ButtonA1, $ButtonA2, $form2, $ButtonB1, $ButtonB2

$form1 = GUICreate('1', 200, 200, 800, 400)
$ButtonA1 = GUICtrlCreateButton('显示窗口2', 20, 80, 100, 20)
$ButtonA2 = GUICtrlCreateButton('隐藏窗口2', 20, 110, 100, 20)
GUISetState(@SW_SHOW, $form1)
$form2 = GUICreate('2', 200, 200, 1200, 400)
$ButtonB1 = GUICtrlCreateButton('B1', 20, 80, 100, 20)
$ButtonB2 = GUICtrlCreateButton('B2', 20, 120, 100, 20)
GUISetState(@SW_HIDE, $form2)


While 1
        $aMsg = GUIGetMsg(1)
        Switch $aMsg[1]
                Case $form1
                        Switch $aMsg[0]
                                Case -3
                                        ExitLoop
                                Case $ButtonA1
                                        GUISetState(@SW_SHOW, $form2)
                                Case $ButtonA2
                                        GUISetState(@SW_HIDE, $form2)
                        EndSwitch
                Case $form2
                        Switch $aMsg[0]
                                Case -3
                                        GUISetState(@SW_HIDE, $form2)
                                Case $ButtonB1
                                        MsgBox(262144, '', 'B1')
                                Case $ButtonB2
                                        MsgBox(262144, '', 'B2')
                        EndSwitch
        EndSwitch
WEnd
[/au3]

看看是不是这样,瞎扯一下,睡觉了。
发表于 2020-2-13 01:18:14 | 显示全部楼层
本帖最后由 lgdobo 于 2020-2-13 01:26 编辑

;我也是新手 ,不清楚你的意思  ,初步理解了一下  是不是个这; 其中 $ButtonB1,$ButtonB2 后面可以不跟 $form2  但是我原来遇到过不跟 $form2 这个  有时候按钮就不显示了

  1. #include <GUIConstantsEx.au3>

  2. Global $form1, $ButtonA1, $ButtonA2, $form2, $ButtonB1, $ButtonB2

  3. $form1 = GUICreate('1', 200, 200, -1, -1)
  4. $ButtonA1 = GUICtrlCreateButton('显示窗口2', 20, 80, 100, 20)
  5. $ButtonA2 = GUICtrlCreateButton('隐藏窗口2', 20, 110, 100, 20)
  6. GUISetState(@SW_SHOW)
  7. $form2 = GUICreate('2', 200, 200, 100, 100,$form1 )
  8. $ButtonB1 = GUICtrlCreateButton('隐藏窗口1', 20, 50, 120, 20,$form2)
  9. $ButtonB2 = GUICtrlCreateButton('显示窗口1', 20, 110, 120, 20,$form2)
  10. While 1
  11.         $msg = GUIGetMsg()
  12.         Switch $msg
  13.                 Case -3
  14.                         Exit
  15.                 Case $ButtonA1
  16.                         
  17.                         GUISetState(@SW_SHOW, $form2)
  18.                 Case $ButtonA2
  19.                         
  20.                         GUISetState(@SW_HIDE, $form2)
  21.                 case        $ButtonB1
  22.                         GUISetState(@SW_HIDE, $form1)
  23.                 Case $ButtonB2
  24.                         GUISetState(@SW_SHOW, $form1)
  25.         EndSwitch
  26. WEnd
复制代码
 楼主| 发表于 2020-2-13 03:35:24 来自手机 | 显示全部楼层
感谢各位的回复,如果按照4楼的方法直接创建form2与buttonb1,buttonb2是一切正常的,我是想问如果是通过form1的按钮创建form2时,form2的按钮会有问题,目前知道是我用的方法完成的,想请各位指点下我的方法哪里有问题,如何修改,谢谢!
 楼主| 发表于 2020-2-13 03:37:04 来自手机 | 显示全部楼层
感谢各位的回复,如果按照4楼的方法直接创建form2与buttonb1,buttonb2是一切正常的,我是想问如果是通过form1的按钮创建form2时,form2的按钮会有问题,目前知道是我用的方法造成的问题,想请各位指点下我的方法哪里有问题,如何修改,谢谢!
发表于 2020-2-13 08:56:42 | 显示全部楼层
anythinging 发表于 2020-2-13 03:37
感谢各位的回复,如果按照4楼的方法直接创建form2与buttonb1,buttonb2是一切正常的,我是想问如果是通过for ...

用事件模式
[au3]
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
Opt("GUIOnEventMode", 1)
Global $form1, $ButtonA1, $ButtonA2, $form2, $ButtonB1, $ButtonB2
_CreatForm1()
While 1
        Sleep(100)
WEnd
Func _CExit()
        GUIDelete()
        Exit
EndFunc   ;==>_CExit
Func _CreatForm1()
        $form1 = GUICreate('1', 200, 200, 800, 400)
        GUISetOnEvent($GUI_EVENT_CLOSE, "_CExit")
        $ButtonA1 = GUICtrlCreateButton('显示窗口2', 20, 80, 100, 20)
        GUICtrlSetOnEvent(-1, "_ButtonA1")
        $ButtonA2 = GUICtrlCreateButton('隐藏窗口2', 20, 110, 100, 20)
        GUICtrlSetOnEvent(-1, "_ButtonA2")
        GUISetState(@SW_SHOW, $form1)
EndFunc   ;==>_CreatForm1
Func _CreatForm2()
        $form2 = GUICreate('2', 200, 200, 1200, 400)
        $ButtonB1 = GUICtrlCreateButton('B1', 20, 80, 100, 20)
        GUICtrlSetOnEvent(-1, "_ButtonB1")
        $ButtonB2 = GUICtrlCreateButton('B2', 20, 110, 100, 20)
        GUICtrlSetOnEvent(-1, "_ButtonB2")
        GUISetState(@SW_SHOW, $form2)
EndFunc   ;==>_CreatForm2
Func _ButtonA1()
        _CreatForm2()
EndFunc   ;==>_ButtonA1
Func _ButtonA2()
        GUIDelete($form2)
EndFunc   ;==>_ButtonA2
Func _ButtonB1()
        MsgBox(262144, '', 'B1')
EndFunc   ;==>_ButtonB1
Func _ButtonB2()
        MsgBox(262144, '', 'B2')
EndFunc   ;==>_ButtonB2

[/au3]

评分

参与人数 1金钱 +60 收起 理由
anythinging + 60 很给力!

查看全部评分

 楼主| 发表于 2020-2-13 11:29:07 | 显示全部楼层
chzj589 发表于 2020-2-13 08:56
用事件模式
[au3]
#include

感谢指点!这个确实可以,而且居然可以不需要switch了。不知与之前那种方式的有什么区别,或者说通常适合用于什么案例中?
发表于 2020-2-13 11:58:02 | 显示全部楼层
anythinging 发表于 2020-2-13 11:29
感谢指点!这个确实可以,而且居然可以不需要switch了。不知与之前那种方式的有什么区别,或者说通常适合 ...

这个更灵活一些的,而且也可以在主循环中加入其它函数
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2020-9-24 13:48 , Processed in 1.218757 second(s), 23 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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