[已解决] 创建的窗口一闪就关闭
本帖最后由 netbullking 于 2011-9-24 15:28 编辑初学 AU3,做设置窗体图标练习。现在的问题是,窗体创建后立刻就关闭了。代码如下:
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
Opt("GUIOnEventMode", 1)
Global Const $icon = "iconFrm.ico"
Global Const $title="AU3 project - set up the test from icon"
Global Const $Gui_w = 320
Global Const $Gui_h = 180
_Main()
Func _Main()
GUICreate($title, $Gui_w, $Gui_h, -1, -1, BitOR($WS_OVERLAPPEDWINDOW, $WS_CLIPSIBLINGS))
GUISetIcon($icon, 0)
GUISetState(@SW_MAXIMIZE)
GUISetOnEvent($GUI_EVENT_CLOSE, "_exitApp")
EndFunc
Func _exitApp()
Switch @GUI_CtrlId
Case $GUI_EVENT_CLOSE
Exit
Case $GUI_EVENT_MINIMIZE, $GUI_EVENT_MAXIMIZE
Return
EndSwitch
EndFunc
请各位大大指正,谢谢 沒有循環取消息 本帖最后由 netbullking 于 2011-9-24 13:52 编辑
沒有循環取消息
rchockxm 发表于 2011-9-24 13:33 http://www.autoitx.com/images/common/back.gif
感谢您的回复。
但我是 事件模式,不是循环消息模式啊 回复 3# netbullking
看到你提的这个问题,就想起了我初学au3时也有同样的困惑,于是很是亲切。
这里初学au3时很容易犯惑的地方之一,au3跟AHK或别的脚本有点不一样,得用循环等方式来使脚本不退出。你的脚本是因为脚本执行完了,就自动退出了。
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <Misc.au3>
Opt("GUIOnEventMode", 1)
Global Const $icon = "iconFrm.ico"
Global Const $title = "AU3 project - set up the test from icon"
Global Const $Gui_w = 320
Global Const $Gui_h = 180
_Main()
Do
Until Sleep(10) * _IsPressed("1B")
Func _Main()
GUICreate($title, $Gui_w, $Gui_h, -1, -1, BitOR($WS_OVERLAPPEDWINDOW, $WS_CLIPSIBLINGS))
;GUISetIcon($icon, 0)
GUISetState(@SW_SHOW)
GUISetOnEvent($GUI_EVENT_CLOSE, "_exitApp")
EndFunc ;==>_Main
Func _exitApp()
Switch @GUI_CtrlId
Case $GUI_EVENT_CLOSE
Exit
Case $GUI_EVENT_MINIMIZE, $GUI_EVENT_MAXIMIZE
Return
EndSwitch
EndFunc ;==>_exitApp
楼上正解哈。。不循环的话执行完了就退出啦。。 执行完毕就退出这个现象还真没有注意到呢!!!呵呵!!!! 本帖最后由 netbullking 于 2011-9-24 15:37 编辑
回复 4# happytc
感谢 happytc 大大,受教了。
重新写过,和广大初学者共勉吧#Include <Array.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
Opt("GUIOnEventMode", 1)
Global Const $GUI_TITLE = "AutoIt project - set up the test from icon"
_Main()
Func _Main()
Local $GUI_ICON_FULLNAME = "iconFrm.ico"
Local $GUI_WIDTH = 480
Local $GUI_HEIGHT = 180
GUICreate($GUI_TITLE, $GUI_WIDTH, $GUI_HEIGHT, -1, -1, BitOR($WS_OVERLAPPEDWINDOW, $WS_CLIPSIBLINGS))
GUISetIcon($GUI_ICON_FULLNAME, 0)
GUISetState(@SW_SHOW)
GUISetOnEvent($GUI_EVENT_CLOSE, "_exitApp")
GUISetOnEvent($GUI_EVENT_MAXIMIZE, "_exitApp")
GUISetOnEvent($GUI_EVENT_MINIMIZE, "_exitApp")
;必须有一个循环,以保证代码不退出
;对于简单窗体结构,可以在循环中处理消息,不必使用事件模式
While 1
Sleep(10)
WEnd
EndFunc ;==> _Main
Func getEventName($evtCode)
Local Const $winStr = " Window "
Local $evtNames=["Maximize", "Minimize"]
Switch $evtCode
Case $GUI_EVENT_MINIMIZE
Return $winStr & $evtNames
Case $GUI_EVENT_MAXIMIZE
Return $winStr & $evtNames
Case Else
Return $winStr
EndSwitch
EndFunc;==> getEventName
Func _exitApp()
Switch @GUI_CtrlId
Case $GUI_EVENT_CLOSE
Exit (0)
Case $GUI_EVENT_MINIMIZE, $GUI_EVENT_MAXIMIZE
MsgBox(64, $GUI_TITLE, "ID :" & @GUI_CtrlId & " is" &getEventName(@GUI_CtrlId) & " events")
EndSwitch
EndFunc ;==> _exitApp
页:
[1]