kk_lee69 发表于 2016-5-10 15:12:05

回复 14# chzj589


    你看看 這篇一樣需要類似的 功能
http://www.autoitx.com/forum.php?mod=viewthread&tid=39037&highlight=%B9%D8%B1%D5%B0%B4%C5%A5

還有這篇我估計 樓主也是在詢問跟我一樣的 只是沒人回
http://www.autoitx.com/forum.php?mod=viewthread&tid=36860&highlight=%B9%D8%B1%D5%B0%B4%C5%A5

chzj589 发表于 2016-5-10 15:16:36

回复 16# kk_lee69
哦,那我理解错了。这个我不会

chzj589 发表于 2016-5-10 15:42:53

回复 16# kk_lee69
你的思路是:
1:点击关闭按钮,弹出一个窗口。但不是MsgBox(0, "关闭子窗口", "是否确定关闭子窗口??")
2:点击弹出一个窗口里的确定,关闭子窗口。

kk_lee69 发表于 2016-5-10 16:03:10

回复 18# chzj589

這樣說 好像怪怪的

應該說 點擊關閉按鈕必須要 能夠 讓程式 觸發   目前已經有的MSGBOX 那一段程式
所我在想的是是不是 可以用 GUICtrlSendMsg 直接送處關閉的消息

kk_lee69 发表于 2016-5-10 17:35:07

本帖最后由 kk_lee69 于 2016-5-10 17:37 编辑

回复 17# chzj589


    暈倒解決了原來只要
WinClose($SUB)

就可以了@@

本函數將發送關閉消息到目標窗口, 效果因窗口不同而不同(可能會詢問是否保存數據, 等等).

chzj589 发表于 2016-5-10 20:17:48

回复 20# kk_lee69

是啊,我刚吃完饭,又仔细的看了一遍,发现:

    Func GUI_COMMAND()
        Switch @GUI_CtrlId
                Case $GUI_EVENT_CLOSE
                        Switch @GUI_WinHandle
                                Case $Main
                                        Exit
                                Case $SUB
                                        MsgBox(0, "能夠看到我嗎??", "是否確定要關閉??")
                                        GUIDelete(@GUI_WinHandle)
                        EndSwitch
                Case $Button1
                        MsgBox(0, "点击<确定>", "ID=" & @GUI_CtrlId & " 窗口句柄=" & @GUI_WinHandle & " 控件句柄=" & @GUI_CtrlHandle)
                        GUIDelete($SUB)
        EndSwitch
EndFunc   ;==>GUI_COMMAND
这样就通过了

chzj589 发表于 2016-5-10 20:59:28

回复 21# chzj589

实际是删除子窗口控件

GUIDelete($SUB)

kk_lee69 发表于 2016-5-11 00:11:59

回复 22# chzj589

你看我的範例   看 BUTTON1 的寫法   然後你按下去 看看有甚麼不一樣

這個才是我想要的 效果.....
重點在於WinClose 函數的這句話   本函數將發送關閉消息到目標窗口, 效果因窗口不同而不同(可能會詢問是否保存數據, 等等).

#include <Constants.au3>
#include <WindowsConstants.au3>
#include <GUIConstantsEx.au3>

Opt("GUIOnEventMode", 1)

$Main = GuiCreate("TEST",500,500,-1,-1)
$Button1 = GuiCtrlCreateButton('關閉窗口', 10, 10, 100, 25)

GUISetOnEvent($GUI_EVENT_CLOSE,"GUI_COMMAND")
GUICtrlSetOnEvent($Button1, "GUI_COMMAND")

GUISetState()

$SUB=GUICreate("子窗", 300,200,500, 400,$WS_SYSMENU, -1 , $Main);+$WS_SIZEBOX加上這個風格會變成立體框 $WS_SYSMENU$WS_POPUP
GUISetOnEvent($GUI_EVENT_CLOSE,"GUI_COMMAND")                       
GUISetState()

While 1

Sleep(20)

WEnd


Func GUI_COMMAND()
      Switch @GUI_CtrlId
                Case $GUI_EVENT_CLOSE
                        Switch @GUI_WinHandle
                              Case $Main
                                        Exit
                              Case $SUB
                                        MsgBox(0, "能夠看到我嗎??", "是否確定要關閉??")
                                        GUIDelete(@GUI_WinHandle)
                        EndSwitch
                Case $Button1
                        WinClose($SUB)


      EndSwitch
EndFunc   ;==>GUI_COMMAND

chzj589 发表于 2016-5-11 08:23:40

本帖最后由 chzj589 于 2016-5-11 08:37 编辑

回复 23# kk_lee69
你要的是:

GUIDelete
删除窗口及其所有控件.
GUIDelete([窗口句柄])

你看一下这样有什么不一样

chzj589 发表于 2016-5-11 08:52:25

回复 23# kk_lee69

你说
WinClose($SUB);关闭指定窗口.

GUIDelete($SUB);删除窗口及其所有控件.
有什么不一样?
这句WinClose($SUB);关闭指定窗口,如果没有GUIDelete(@GUI_WinHandle),
就不能关闭子窗口。

kk_lee69 发表于 2016-5-11 09:10:05

回复 25# chzj589

Case $SUB
         GUIDelete(@GUI_WinHandle)
會直接關閉子窗口

Case $SUB
         WinClose(@GUI_WinHandle)

這個不會直接關閉子窗口

而我要的就是 不會直接 關閉子窗口   因為 子窗口 要不要關閉 應該是由另外一段程式 控制

chzj589 发表于 2016-5-11 09:14:17

回复 26# kk_lee69
谢谢解答!{:face (361):}
页: 1 [2]
查看完整版本: 如何可以按下按钮 点击 窗口的关闭按钮??[已解决]