找回密码
 加入
搜索
查看: 1987|回复: 9

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

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


Func _CreatForm2()
$form2 = GUICreate('2',200,200,1200,400)
$ButtonB1 = GUICtrlCreateButton('B1',20,80,100,20)
$ButtonB2 = GUICtrlCreateButton('B2',20,80,100,20)
GUISetState(@SW_SHOW,$form2)
EndFunc




While 1
$msg=GUIGetMsg()
Switch $msg
Case -3
Exit
Case $ButtonA1
_CreatForm2()
Case $ButtonA2
GUIDelete($form2)

Case $ButtonB1
MsgBox(262144,'','B1')
Case $ButtonB2
MsgBox(262144,'','B2')

EndSwitch
Sleep(50)
WEnd
发表于 2020-2-12 22:49:10 | 显示全部楼层
没有代码全靠猜
 楼主| 发表于 2020-2-12 23:23:15 | 显示全部楼层
有时候论坛会巨慢无比
发表于 2020-2-13 00:56:44 | 显示全部楼层

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


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

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

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

$form1 = GUICreate('1', 200, 200, -1, -1)
$ButtonA1 = GUICtrlCreateButton('显示窗口2', 20, 80, 100, 20)
$ButtonA2 = GUICtrlCreateButton('隐藏窗口2', 20, 110, 100, 20)
GUISetState(@SW_SHOW)
$form2 = GUICreate('2', 200, 200, 100, 100,$form1 )
$ButtonB1 = GUICtrlCreateButton('隐藏窗口1', 20, 50, 120, 20,$form2)
$ButtonB2 = GUICtrlCreateButton('显示窗口1', 20, 110, 120, 20,$form2)
While 1
        $msg = GUIGetMsg()
        Switch $msg
                Case -3
                        Exit
                Case $ButtonA1
                        
                        GUISetState(@SW_SHOW, $form2)
                Case $ButtonA2
                        
                        GUISetState(@SW_HIDE, $form2)
                case        $ButtonB1
                        GUISetState(@SW_HIDE, $form1)
                Case $ButtonB2
                        GUISetState(@SW_SHOW, $form1)
        EndSwitch
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 ...

用事件模式

#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


评分

参与人数 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, 2024-11-16 08:34 , Processed in 0.074737 second(s), 20 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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