子窗口与父窗口的问题
想做成这样::父窗口中有一按钮,点击,弹出子窗口
关闭子窗口,父窗口不关闭
关闭父窗口,子、父窗口均关闭
现在遇到的问题是:
不管点子还是父窗口的关闭,均是关闭子窗口(当然如果子窗口不存在,父窗口是正常的)
打开再关闭子窗口后,点击按钮,子窗口不再弹出,并且关闭父窗口虽然Guidelete()后不存在,但exit退出代码执行不管用
求:
高手按上面的要求,写个简单例子给我看看 #Region ;**** 参数创建于 AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_icon=..\..\TDDOWNLOAD\953\Anthropomorphic 047.ico
#AutoIt3Wrapper_UseAnsi=y
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_PassPhrase=820107
#include <GUIConstants.au3>
#include <GuiListView.au3>
#include <GuiStatusbar.au3>
#include <array.au3>
#include <process.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
Opt("TrayMenuMode", 1)
$title = "软件自动安装管理器 V1.0"
$build = "最后更新:2008-01-21"
Opt("GUIOnEventMode", 1)
#Region ### START Koda GUI section ### Form=
$AForm1 = GUICreate($title, 640, 430, 193, 125)
$Pic1 = GUICtrlCreatePic(@TempDir & "\logo.jpg", 3, 3, 634, 100, BitOR($SS_NOTIFY, $WS_GROUP, $WS_CLIPSIBLINGS))
GUICtrlSetState(-1, $GUI_DISABLE)
$Label1 = GUICtrlCreateLabel("请选项择您要安装的软件:", 10, 115, 139, 17)
$ListView1 = GUICtrlCreateListView("软件名称|说明|状态", 8, 130, 622, 193)
GUICtrlSendMsg($ListView1, $LVM_SETEXTENDEDLISTVIEWSTYLE, $LVS_EX_GRIDLINES, $LVS_EX_GRIDLINES)
GUICtrlSendMsg($ListView1, $LVM_SETEXTENDEDLISTVIEWSTYLE, $LVS_EX_FULLROWSELECT, $LVS_EX_FULLROWSELECT)
GUICtrlSendMsg($ListView1, $LVM_SETEXTENDEDLISTVIEWSTYLE, $LVS_EX_CHECKBOXES, $LVS_EX_CHECKBOXES)
_GUICtrlListView_SetColumnWidth($ListView1, 0, 150)
_GUICtrlListView_SetColumnWidth($ListView1, 1, 350)
_GUICtrlListView_SetColumnWidth($ListView1, 2, 118)
;$Edit1 = GUICtrlCreateEdit("", 8, 352, 617, 49, BitOR($ES_AUTOVSCROLL, $ES_AUTOHSCROLL, $ES_WANTRETURN, $WS_VSCROLL))
;GUICtrlSetData(-1, "Edit1")
$Label2 = GUICtrlCreateLabel("欢迎访问:http://www.autoitx.com", 9, 331, 620, 20, BitOR(0x0300, $ss_sunken))
GUICtrlSetBkColor(-1, 0xffffff)
GUICtrlSetColor(-1, 0x0000FF)
$Button1 = GUICtrlCreateButton("关于(&A)", 176, 368, 81, 28)
$Button4 = GUICtrlCreateButton("退出(&X)", 544, 368, 81, 28)
GUICtrlSetOnEvent($Button1, "_about")
GUICtrlSetOnEvent($Button4, "_exit")
$Label3 = GUICtrlCreateLabel("By Pcbar (C) 2008.01", 12, 376, 141, 20)
GUICtrlSetFont(-1, 10, 800, 0, "Arial")
GUICtrlSetState(-1, $GUI_DISABLE)
GUISetOnEvent($GUI_EVENT_CLOSE, "_exit")
Local $a_PartsRightEdge =
Local $a_PartsText = [$title, @TAB & @YEAR & "年" & @MON & "月" & @MDAY & "日", @TAB & @HOUR & ":" & @MIN & ":" & @SEC]
$StatusBar1 = _GUICtrlStatusBar_Create($AForm1, $a_PartsRightEdge, $a_PartsText)
#EndRegion ### END Koda GUI section ###
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;关于窗口开始
#Region ### START Koda GUI section ### Form=D:\autoit\install\about.kxf
$Form2 = GUICreate("关于", 298, 155, -1, -1, BitOR($WS_SYSMENU, $WS_CAPTION, $WS_POPUP, $WS_POPUPWINDOW, $WS_BORDER, $WS_CLIPSIBLINGS), Default, $AForm1)
GUISetOnEvent($GUI_EVENT_CLOSE, "form2_exit", $Form2)
$Label2_1 = GUICtrlCreateLabel($title, 16, 24, 188, 20)
GUICtrlSetFont(-1, 12, 400, 0, "黑体")
$Label2_2 = GUICtrlCreateLabel($build, 16, 56, 130, 17)
$Button2_1 = GUICtrlCreateLabel("", 40, 101, 3, 43, -1, $WS_EX_STATICEDGE)
$Label2_3 = GUICtrlCreateLabel("作者:pcbar", 48, 104, 67, 17)
$Label2_4 = GUICtrlCreateLabel("EMAIL:pcbar@163..com", 48, 128, 130, 17)
$Button2_2 = GUICtrlCreateButton("确定", 215, 114, 65, 28, 0)
GUICtrlSetOnEvent(-1, "form2_exit")
#EndRegion ### END Koda GUI section ###
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;关于窗口结束
GUISwitch($AForm1)
GUISetState(@SW_SHOW)
While 1
Sleep(250)
_GUICtrlStatusBar_SetText($StatusBar1, @TAB & @HOUR & ":" & @MIN & ":" & @SEC, 2)
WEnd
Func _exit()
FileDelete(@TempDir & "\logo.jpg")
Exit
EndFunc ;==>_exit
Func form2_exit()
GUISetState(@SW_HIDE, $Form2)
GUISwitch($AForm1)
GUISetState(@SW_ENABLE, $AForm1)
WinActivate($AForm1)
EndFunc ;==>form2_exit
Func _about()
GUISwitch($Form2)
GUISetState(@SW_SHOW, $Form2)
GUISetState(@SW_DISABLE,$AForm1)
EndFunc ;==>_about 谢谢pcbar
正在学习 看了一下,今天需要找的就是这个资料,支持一下了。 这个很好,学习了 超版发的代码,关闭关于对话框后,父窗口会闪,不知道为什么。 这种模式下,需要把Opt("GUIOnEventMode", 1) 设置为1。
我原来的程序没有采用这种模式,而且按钮也比较多。参考上面的代码我在点击关于form2的窗口动作时加个判断。
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
if WinActive("弹出窗口标题") Then
Form2_Close()
Else
Exit
EndIf
.....
EndSwitch
WEnd
这样Form2点关闭时的动作就设为隐藏窗口而不是退出,form2_close()代码参考楼主代码。 路过,留下脚印 好高深的样子{:face (332):}
页:
[1]