如何可以按下按钮 点击 窗口的关闭按钮??[已解决]
本帖最后由 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 14:57 编辑
回复 1# kk_lee69
不会是这样吧?
Case $Button1
MsgBox(0,"能夠看到我嗎??","是否確定要關閉??")
GUISetState(@SW_HIDE, $SUB) 回复 2# chzj589
是這樣 就沒意義啦 就是打算寫成類似模組化的東西 因為處理離開消息的時候 可能寫了一大段程式
因此 想如果 可以模擬出 按下那個納紐就不用再另外判斷一大段的程式 回复 3# kk_lee69
不理解你的意思? 簡單說 $Button1
底下的 怎麼寫都可以但是 不可以寫 MsgBox(0, "关闭子窗口", "是否关闭子窗口??")
要能夠按下 $Button1
關閉子窗並且 彈出 "是否关闭子窗口??" 回复 5# kk_lee69
点击关闭窗口按钮,然后关闭子窗口后再弹出 MsgBox(0, "关闭子窗口", "是否关闭子窗口??")
点击是指鼠标操作,按下是指键盘操作。 回复 6# chzj589
都可以這個沒差別 看看哪個最不影響 USER操作 看起來應該是鍵盤吧 点关闭后先隐藏 GUISetState(@SW_HIDE,窗口句柄) 本帖最后由 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 回复 9# chzj589
你這樣 有彈出 詢問的視窗嗎我要彈出 回复 10# kk_lee69
你自己修改一下 回复 11# chzj589
感謝回復 !!
其實我只是想了解 是否有辦法 用程式 直接送出 某個窗口 關閉的事件 回复 1# kk_lee69
上张图:
本帖最后由 chzj589 于 2016-5-10 14:55 编辑
回复 12# kk_lee69
9楼的代码你调试看看
其实2楼就己经解决问题了 回复 14# chzj589
恩 依照你的方式這個問題 哪有甚麼困難的 自己多一行 MsgBox(0, "打开子窗口", "是否确定打开子窗口??")
不管放在哪裡 不就達到一樣的效果
但是我的重點在於不可以多任何的 MsgBox(0, "打开子窗口", "是否确定打开子窗口??")
卻要讓程式 可以 彈出 MsgBox(0, "打开子窗口", "是否确定打开子窗口??")
因此 必須要觸發 Case $GUI_EVENT_CLOSE
页:
[1]
2