找回密码
 加入
搜索
查看: 4018|回复: 8

子窗口与父窗口的问题

  [复制链接]
发表于 2009-6-26 15:11:13 | 显示全部楼层 |阅读模式
想做成这样::
父窗口中有一按钮,点击,弹出子窗口
关闭子窗口,父窗口不关闭
关闭父窗口,子、父窗口均关闭


现在遇到的问题是:
不管点子还是父窗口的关闭,均是关闭子窗口(当然如果子窗口不存在,父窗口是正常的)
打开再关闭子窗口后,点击按钮,子窗口不再弹出,并且关闭父窗口虽然Guidelete()后不存在,但exit退出代码执行不管用


求:
高手按上面的要求,写个简单例子给我看看
发表于 2009-6-26 15:48:35 | 显示全部楼层
#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[3] = [400, 550, -1]
Local $a_PartsText[3] = [$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
 楼主| 发表于 2009-6-26 15:59:24 | 显示全部楼层
谢谢pcbar
正在学习
发表于 2009-12-13 12:43:14 | 显示全部楼层
看了一下,今天需要找的就是这个资料,支持一下了。
发表于 2009-12-13 22:37:32 | 显示全部楼层
这个很好,学习了
发表于 2009-12-14 10:59:34 | 显示全部楼层
超版发的代码,关闭关于对话框后,父窗口会闪,不知道为什么。
发表于 2010-1-2 22:00:06 | 显示全部楼层
这种模式下,需要把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()代码参考楼主代码。
发表于 2012-4-25 21:21:16 | 显示全部楼层
路过,留下脚印
发表于 2016-3-14 00:36:03 | 显示全部楼层
好高深的样子
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-9-29 02:17 , Processed in 0.087868 second(s), 19 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表