找回密码
 加入
搜索
查看: 6413|回复: 26

[AU3基础] 如何可以按下按钮 点击 窗口的关闭按钮??[已解决]

  [复制链接]
发表于 2016-5-10 00:02:40 | 显示全部楼层 |阅读模式
本帖最后由 kk_lee69 于 2016-5-10 17:35 编辑

如何可以按下按钮  点击 窗口的关闭按钮??

如下程序

直接关闭子窗口  可以 有MSGBOX 的询问窗口

但是 按下按钮 却只能关闭 看不到 询问

如何按下按钮  可以 看到 询问窗口??

#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)
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
                        GUIDelete($SUB)

    EndSwitch
EndFunc




可能是我  表達的不好....
我希望的是 修改 Case $Button1
的位置 而達到 如同 我人 手動 按下  子窗的關閉按鈕  
因此 MsgBox(0,"能夠看到我嗎??","是否確定要關閉??")
這個  只能在這段程式裡面 出現一次  所以 不能自己增加

能夠使用 GUICtrlSendMsg($SUB,$GUI_EVENT_CLOSE)  這樣的方式 送出消息嗎??

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
发表于 2016-5-10 08:29:48 | 显示全部楼层
本帖最后由 chzj589 于 2016-5-10 14:57 编辑

回复 1# kk_lee69
不会是这样吧?

Case $Button1
        MsgBox(0,"能夠看到我嗎??","是否確定要關閉??")
        GUISetState(@SW_HIDE, $SUB)
 楼主| 发表于 2016-5-10 09:20:30 | 显示全部楼层
回复 2# chzj589

是這樣 就沒意義啦 就是打算寫成類似模組化的東西   因為  處理離開消息的時候 可能寫了一大段程式

因此 想  如果 可以模擬出 按下那個納紐  就不用再另外判斷一大段的程式
发表于 2016-5-10 09:30:01 | 显示全部楼层
回复 3# kk_lee69
不理解你的意思?
 楼主| 发表于 2016-5-10 10:15:57 | 显示全部楼层
簡單說   $Button1
底下的 怎麼寫都可以  但是 不可以寫     MsgBox(0, "关闭子窗口", "是否关闭子窗口??")

要能夠  按下    $Button1
關閉子窗  並且 彈出 "是否关闭子窗口??"
发表于 2016-5-10 10:33:31 | 显示全部楼层
回复 5# kk_lee69
点击关闭窗口按钮,然后关闭子窗口后再弹出 MsgBox(0, "关闭子窗口", "是否关闭子窗口??")
点击是指鼠标操作,按下是指键盘操作。
 楼主| 发表于 2016-5-10 11:56:19 | 显示全部楼层
回复 6# chzj589

都可以  這個沒差別 看看哪個最不影響 USER操作 看起來應該是鍵盤吧
发表于 2016-5-10 12:19:10 | 显示全部楼层
点关闭后先隐藏 GUISetState(@SW_HIDE,窗口句柄)
发表于 2016-5-10 12:57:13 | 显示全部楼层
本帖最后由 chzj589 于 2016-5-10 14:42 编辑

回复 7# kk_lee69

那这样呢?

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

Opt("GUIOnEventMode", 1)
HotKeySet("+!z", "GUI_Button1") ; Shift-Alt-z
HotKeySet("+!x", "GUI_Button2") ; Shift-Alt-z
Global $Mainb, $Button1, $Button2
GUI_Main()
While 1
        Sleep(20)
WEnd
Func GUI_Main()
        $Main = GUICreate("TEST", 500, 500, -1, -1)
        GUISetOnEvent($GUI_EVENT_CLOSE, "MainClose")
        $Button1 = GUICtrlCreateButton('关闭子窗口', 10, 10, 100, 25)
        GUICtrlSetOnEvent($Button1, "GUI_Button1")
        $Button2 = GUICtrlCreateButton('打开子窗口', 10, 10, 100, 25)
        GUICtrlSetOnEvent($Button2, "GUI_Button2")
        GUICtrlSetState($Button2, $GUI_HIDE)
        GUICtrlCreateLabel("键盘组合键:<Shift-Alt-z> 关闭子窗口", 10,45, 350, 25, 0)
        GUICtrlSetFont(-1, 12, 600, 0, "Times New Roman")
        GUICtrlSetColor(-1, 0x009900)
        GUICtrlCreateLabel("键盘组合键:<Shift-Alt-x> 打开子窗口", 10,85, 350, 25, 0)
        GUICtrlSetFont(-1, 12, 600, 0, "Times New Roman")
        GUICtrlSetColor(-1, 0xff0000)
        GUISetState()

        $Mainb = GUICreate("子窗口", 300, 200, 500, 400, $WS_SYSMENU, -1, $Main)
        GUISetOnEvent($Mainb, "GUI_Button1")
        GUISetState()
EndFunc   ;==>GUI_Main

Func MainClose()
        Exit
EndFunc   ;==>MainClose

Func GUI_Button1()
        MsgBox(0, "关闭子窗口", "是否确定关闭子窗口??")
        GUISetState(@SW_HIDE, $Mainb)
        GUICtrlSetState($Button1, $GUI_HIDE)
        GUICtrlSetState($Button2, $GUI_SHOW)
EndFunc   ;==>GUI_Button1
Func GUI_Button2()
        MsgBox(0, "打开子窗口", "是否确定打开子窗口??")
        GUISetState(@SW_SHOW, $Mainb)
        GUICtrlSetState($Button2, $GUI_HIDE)
        GUICtrlSetState($Button1, $GUI_SHOW)
EndFunc   ;==>GUI_Button2
 楼主| 发表于 2016-5-10 13:53:21 | 显示全部楼层
回复 9# chzj589


    你這樣 有彈出 詢問的視窗嗎  我要彈出
发表于 2016-5-10 14:15:32 | 显示全部楼层
回复 10# kk_lee69

你自己修改一下
 楼主| 发表于 2016-5-10 14:35:49 | 显示全部楼层
回复 11# chzj589

感謝回復 !!  

其實我只是想了解 是否有辦法 用程式 直接送出 某個窗口 關閉的事件
发表于 2016-5-10 14:35:56 | 显示全部楼层
回复 1# kk_lee69
上张图:

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
发表于 2016-5-10 14:43:20 | 显示全部楼层
本帖最后由 chzj589 于 2016-5-10 14:55 编辑

回复 12# kk_lee69
9楼的代码你调试看看 

其实2楼就己经解决问题了
 楼主| 发表于 2016-5-10 15:09:09 | 显示全部楼层
回复 14# chzj589

恩 依照你的方式  這個問題 哪有甚麼困難的 自己多一行 MsgBox(0, "打开子窗口", "是否确定打开子窗口??")

不管放在哪裡 不就達到一樣的效果

但是我的重點在於  不可以多任何的 MsgBox(0, "打开子窗口", "是否确定打开子窗口??")

卻要讓程式 可以 彈出 MsgBox(0, "打开子窗口", "是否确定打开子窗口??")

因此 必須要觸發     Case $GUI_EVENT_CLOSE
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-9-29 03:30 , Processed in 0.237108 second(s), 24 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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