关闭GUI后,如何返回托盘菜单而不是退出程序?
#Include <Constants.au3>#NoTrayIcon
Opt("TrayMenuMode",1) ; Default tray menu items (Script Paused/Exit) will not be shown.
$settingsitem = TrayCreateMenu("设置")
$displayitem = TrayCreateItem("显示", $settingsitem)
$printeritem = TrayCreateItem("打印", $settingsitem)
TrayCreateItem("")
$aboutitem = TrayCreateItem("关于")
TrayCreateItem("")
$exititem = TrayCreateItem("退出")
TraySetState()
While 1
$msg = TrayGetMsg()
Select
Case $msg = 0
ContinueLoop
Case $msg = $aboutitem
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
$Form1_1 = GUICreate("", 274, 115, -1, -1, BitOR($WS_SYSMENU,$WS_CAPTION,$WS_POPUP,$WS_POPUPWINDOW,$WS_BORDER,$WS_CLIPSIBLINGS))
GUISetIcon("D:\123\456.exe")
$Group1 = GUICtrlCreateGroup("关于", 7, 2, 263, 101)
$Label1 = GUICtrlCreateLabel("小软件", 94, 14, 88, 17)
$Label2 = GUICtrlCreateLabel("软件由我出品", 83, 47, 112, 16)
GUICtrlSetFont(-1, 9, 400, 0, "新宋体")
GUICtrlSetColor(-1, 0x0000FF)
$Label3 = GUICtrlCreateLabel("我的作品", 167, 83, 100, 16)
GUICtrlSetFont(-1, 9, 400, 0, "新宋体")
GUICtrlCreateGroup("", -99, -99, 1, 1)
GUISetState(@SW_SHOW)
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
EndSwitch
WEnd
Case $msg = $exititem
ExitLoop
EndSelect
WEnd
Exit
上面是我的代码,我选择关于之后,弹出一个窗口,当我关闭这个窗口的时候,整个程序都退出了,请教一下,如何修改可以点击关闭按钮后关闭窗口,而不退出主程序呢?
[ 本帖最后由 离我远点 于 2009-3-2 22:52 编辑 ] 我把程序代码改成:
#Include <Constants.au3>
#NoTrayIcon
Opt("TrayMenuMode",1) ; Default tray menu items (Script Paused/Exit) will not be shown.
$settingsitem = TrayCreateMenu("设置")
$displayitem = TrayCreateItem("显示", $settingsitem)
$printeritem = TrayCreateItem("打印", $settingsitem)
TrayCreateItem("")
$aboutitem = TrayCreateItem("关于")
TrayCreateItem("")
$exititem = TrayCreateItem("退出")
TraySetState()
While 1
$msg = TrayGetMsg()
Select
Case $msg = 0
ContinueLoop
Case $msg = $aboutitem
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
$Form1_1 = GUICreate("", 274, 115, -1, -1, BitOR($WS_SYSMENU,$WS_CAPTION,$WS_POPUP,$WS_POPUPWINDOW,$WS_BORDER,$WS_CLIPSIBLINGS))
GUISetIcon("D:\123\456.exe")
$Group1 = GUICtrlCreateGroup("关于", 7, 2, 263, 101)
$Label1 = GUICtrlCreateLabel("小软件", 94, 14, 88, 17)
$Label2 = GUICtrlCreateLabel("软件由我出品", 83, 47, 112, 16)
GUICtrlSetFont(-1, 9, 400, 0, "新宋体")
GUICtrlSetColor(-1, 0x0000FF)
$Label3 = GUICtrlCreateLabel("我的作品", 167, 83, 100, 16)
GUICtrlSetFont(-1, 9, 400, 0, "新宋体")
GUICtrlCreateGroup("", -99, -99, 1, 1)
GUISetState(@SW_SHOW)
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
GUIDelete($Form1_1)
EndSwitch
WEnd
Case $msg = $exititem
ExitLoop
EndSelect
WEnd
Exit
之后可以返回了,但是点过一次关于之后,好像所有的循环都失效了?什么也点不了,也退不出来。 While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
GUIDelete($Form1_1)
下面加一行exitloop
代码写得真够乱的。。。。这种结构不好 多谢楼上的帮忙,不过还是不行,我按你说的,在那个位置加个exitloop以后,第一次点“关于”,弹出对话框正常,把那个对话框关掉之后,再去点“关于”,软件什么也不提示,就直接退出了。 原帖由 离我远点 于 2009-3-2 20:06 发表 http://www.autoitx.com/images/common/back.gif
多谢楼上的帮忙,不过还是不行,我按你说的,在那个位置加个exitloop以后,第一次点“关于”,弹出对话框正常,把那个对话框关掉之后,再去点“关于”,软件什么也不提示,就直接退出了。
把所有的#include<******>都写到头上去
对了,就算这样还是有问题。。。不过问题不大,要是能换事件模事的话就改掉吧
[ 本帖最后由 cnsnc 于 2009-3-2 20:25 编辑 ] 放到上面也无法循环,因为选择了关于之后,那个$msg的值已经不等于0了,所以不会循环。 ................................我试了N次都能正常开关
$msg的值怎么就等于0了,"0"扯太远了,case $msg=0也很是无厘头
脚本小问题不少,先别急着写下去,建议参考下别人的代码,我看看帮助,还有很多功课要做的 多谢楼上的帮我解答,最后实在编不出来,我把那个关于做成一个程序,用RUN调用了。 不难的,关键是要学点基础知识,论坛上的多窗口教程参考下,会很有帮助的。 #include <Constants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#NoTrayIcon
Opt("TrayMenuMode", 1) ; Default tray menu items (Script Paused/Exit) will not be shown.
$settingsitem = TrayCreateMenu("设置")
$displayitem = TrayCreateItem("显示", $settingsitem)
$printeritem = TrayCreateItem("打印", $settingsitem)
TrayCreateItem("")
$aboutitem = TrayCreateItem("关于")
TrayCreateItem("")
$exititem = TrayCreateItem("退出")
TraySetState()
While 1
$msg = TrayGetMsg()
Select
Case $msg = $aboutitem
$Form1_1 = GUICreate("", 274, 115, -1, -1, BitOR($WS_SYSMENU, $WS_CAPTION, $WS_POPUP, $WS_POPUPWINDOW, $WS_BORDER, $WS_CLIPSIBLINGS))
GUISetIcon("D:\123\456.exe")
$Group1 = GUICtrlCreateGroup("关于", 7, 2, 263, 101)
$Label1 = GUICtrlCreateLabel("小软件", 94, 14, 88, 17)
$Label2 = GUICtrlCreateLabel("软件由我出品", 83, 47, 112, 16)
GUICtrlSetFont(-1, 9, 400, 0, "新宋体")
GUICtrlSetColor(-1, 0x0000FF)
$Label3 = GUICtrlCreateLabel("我的作品", 167, 83, 100, 16)
GUICtrlSetFont(-1, 9, 400, 0, "新宋体")
GUICtrlCreateGroup("", -99, -99, 1, 1)
GUISetState(@SW_SHOW)
Do
Until GUIGetMsg() = $GUI_EVENT_CLOSE
GUIDelete($Form1_1)
Case $msg = $exititem
Exit
EndSelect
WEnd
Exit 谢谢楼上的帮助!受教了~! 十楼的解答很好,学习了。
页:
[1]