kk_lee69 发表于 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)這樣的方式 送出消息嗎??

chzj589 发表于 2016-5-10 08:29:48

本帖最后由 chzj589 于 2016-5-10 14:57 编辑

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

Case $Button1
      MsgBox(0,"能夠看到我嗎??","是否確定要關閉??")
        GUISetState(@SW_HIDE, $SUB)

kk_lee69 发表于 2016-5-10 09:20:30

回复 2# chzj589

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

因此 想如果 可以模擬出 按下那個納紐就不用再另外判斷一大段的程式

chzj589 发表于 2016-5-10 09:30:01

回复 3# kk_lee69
不理解你的意思?

kk_lee69 发表于 2016-5-10 10:15:57

簡單說   $Button1
底下的 怎麼寫都可以但是 不可以寫   MsgBox(0, "关闭子窗口", "是否关闭子窗口??")

要能夠按下    $Button1
關閉子窗並且 彈出 "是否关闭子窗口??"

chzj589 发表于 2016-5-10 10:33:31

回复 5# kk_lee69
点击关闭窗口按钮,然后关闭子窗口后再弹出 MsgBox(0, "关闭子窗口", "是否关闭子窗口??")
点击是指鼠标操作,按下是指键盘操作。

kk_lee69 发表于 2016-5-10 11:56:19

回复 6# chzj589

都可以這個沒差別 看看哪個最不影響 USER操作 看起來應該是鍵盤吧

lin6051 发表于 2016-5-10 12:19:10

点关闭后先隐藏 GUISetState(@SW_HIDE,窗口句柄)

chzj589 发表于 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

kk_lee69 发表于 2016-5-10 13:53:21

回复 9# chzj589


    你這樣 有彈出 詢問的視窗嗎我要彈出

chzj589 发表于 2016-5-10 14:15:32

回复 10# kk_lee69

你自己修改一下

kk_lee69 发表于 2016-5-10 14:35:49

回复 11# chzj589

感謝回復 !!

其實我只是想了解 是否有辦法 用程式 直接送出 某個窗口 關閉的事件

chzj589 发表于 2016-5-10 14:35:56

回复 1# kk_lee69
上张图:

chzj589 发表于 2016-5-10 14:43:20

本帖最后由 chzj589 于 2016-5-10 14:55 编辑

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

其实2楼就己经解决问题了

kk_lee69 发表于 2016-5-10 15:09:09

回复 14# chzj589

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

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

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

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

因此 必須要觸發   Case $GUI_EVENT_CLOSE
页: [1] 2
查看完整版本: 如何可以按下按钮 点击 窗口的关闭按钮??[已解决]