回复 15# ac5474012
你的代码稍微改一下就可以了.
先把Func mimaK($mimaLJ)里面的Return ('0')去掉.
Case $GUI_EVENT_CLOSE
Exit
改为Case $GUI_EVENT_CLOSE
GUIDelete($Form2)
ExitLoop另外,Return ('0')这个写法不对吧,应该是Return (0) Return (1) 你这个涉及子父窗口问题,搜索一下论坛看看人家怎么写,慢慢的自己就会了。
刚好前久我也学习GUIOnEventMode模式,写的一个小例子个你参考。
别人给你代码也许你什么也学不到,自己实践成功才是最大的快乐。
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
Dim $B1, $F1, $F2
Opt("GUIOnEventMode", 1)
father()
Func father()
$F1 = GUICreate("father", 608, 456, 192, 124)
GUISetOnEvent($GUI_EVENT_CLOSE, "gui")
GUISetBkColor(0x335EA8)
$B1 = GUICtrlCreateButton("son", 472, 384, 105, 41)
GUICtrlSetOnEvent($B1, "gui")
GUISetState(@SW_SHOW)
EndFunc ;==>father
Func son()
$F2 = GUICreate("son", 413, 298, 193, 123)
GUISetOnEvent($GUI_EVENT_CLOSE, "gui")
GUISetBkColor(0x800080)
GUISetState(@SW_SHOW)
EndFunc ;==>son
While 1
;
WEnd
Func gui()
Switch @GUI_CtrlId
Case $GUI_EVENT_CLOSE
Switch @GUI_WinHandle
Case $F1
Exit
Case $F2
GUISetState(@SW_HIDE, $F2)
GUISetState(@SW_ENABLE, $F1)
WinActivate("father")
EndSwitch
Case $B1
GUISetState(@SW_DISABLE, $F1)
son()
EndSwitch
EndFunc ;==>gui
我不是在群里说了吗 高级模式 是啊,楼上说得对
修改为以下就没问题了。
While 1
;Return ('0')
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
;Exit
GUISetState(@SW_ENABLE, $Form1_1)
GUIDelete($Form2)
ExitLoop
Case $ButtonOk
$zhanghaoZ = GUICtrlRead($zhanghaoSR)
$mimaZ = GUICtrlRead($mimaSR)
If $zhanghaoZ = "" Then
MsgBox(0, "", "请输入您的账号")
Else
$m = mima($zhanghaoZ, $mimaZ, $mimaLJ)
If $m = 1 Then
Return ('1')
ExitLoop
EndIf
If $m = 2 Then MsgBox(0, "", "你的账号错误")
If $m = 3 Then MsgBox(0, "", "你的密码错误")
If $m = 0 Then MsgBox(0, "", "意外错误")
EndIf
Case $ButtonCancel
EndSwitch
WEnd
EndFunc ;==>mimaK 还有,看代码貌似个"大工程"
可惜细看代码,发现有"拼起来"的感觉。
基础知识和逻辑思维很重要。 #include <GUIConstantsEx.au3>
_Main()
Func _Main()
Local $GUIWidth = 250, $GUIHeight = 250
Local $ParentWin, $ParentWin_Pos, $ChildWin, $msg
$ParentWin = GUICreate("父窗体", $GUIWidth, $GUIHeight)
$ParentWin_Pos = WinGetPos($ParentWin, "")
GUISetState(@SW_SHOW)
$ChildWin = GUICreate("子窗体", $GUIWidth, $GUIHeight, $ParentWin_Pos + 100, $ParentWin_Pos + 100, -1, -1, $ParentWin)
GUISetState(@SW_SHOW)
GUISwitch($ParentWin)
While 1
$msg = GUIGetMsg(1)
Select
Case $msg = $GUI_EVENT_CLOSE
If $msg = $ChildWin Then
MsgBox(64, "测试", "隐藏子窗体.")
GUISwitch($ChildWin)
GUISetState(@SW_HIDE)
ElseIf $msg = $ParentWin Then
MsgBox(64, "测试", "隐藏父窗体.")
GUISwitch($ParentWin)
GUISetState(@SW_HIDE)
EndIf
EndSelect
WEnd
EndFunc ;==>_Main
帮助里看看$msg=guigetmsg(1)的意思
netegg 发表于 2011-3-22 17:08 http://www.autoitx.com/images/common/back.gif
学习了.....
页:
1
[2]