【已解决】关于新建创口中按钮出错的问题
本帖最后由 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
没有代码全靠猜:face (39): 有时候论坛会巨慢无比
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
Case $form1
Switch $aMsg
Case -3
ExitLoop
Case $ButtonA1
GUISetState(@SW_SHOW, $form2)
Case $ButtonA2
GUISetState(@SW_HIDE, $form2)
EndSwitch
Case $form2
Switch $aMsg
Case -3
GUISetState(@SW_HIDE, $form2)
Case $ButtonB1
MsgBox(262144, '', 'B1')
Case $ButtonB2
MsgBox(262144, '', 'B2')
EndSwitch
EndSwitch
WEnd
看看是不是这样,瞎扯一下,睡觉了。
:face (1): 本帖最后由 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 感谢各位的回复,如果按照4楼的方法直接创建form2与buttonb1,buttonb2是一切正常的,我是想问如果是通过form1的按钮创建form2时,form2的按钮会有问题,目前知道是我用的方法完成的,想请各位指点下我的方法哪里有问题,如何修改,谢谢! 感谢各位的回复,如果按照4楼的方法直接创建form2与buttonb1,buttonb2是一切正常的,我是想问如果是通过form1的按钮创建form2时,form2的按钮会有问题,目前知道是我用的方法造成的问题,想请各位指点下我的方法哪里有问题,如何修改,谢谢! 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
chzj589 发表于 2020-2-13 08:56
用事件模式
#include
感谢指点!这个确实可以,而且居然可以不需要switch了。不知与之前那种方式的有什么区别,或者说通常适合用于什么案例中? anythinging 发表于 2020-2-13 11:29
感谢指点!这个确实可以,而且居然可以不需要switch了。不知与之前那种方式的有什么区别,或者说通常适合 ...
这个更灵活一些的,而且也可以在主循环中加入其它函数
页:
[1]