本帖最后由 kk_lee69 于 2016-10-14 09:46 编辑
回复 2# babicy
問題解決了
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <GuiStatusBar.au3>
#include <WindowsConstants.au3>
#include <constants.au3>
#include <ComboConstants.au3>
Opt("GUIOnEventMode", 1)
Dim $Form2,$Form3,$Form4,$Form2_Button2,$Form3_Button1,$Form4_Combo1,$Form4_Button1
$Form1=GUICreate("測試", 615, 80, 192, 124)
GUISetOnEvent($GUI_EVENT_CLOSE, "main")
$Form1_Button1 = GUICtrlCreateButton("顯示視窗1", 0, 0, 73, 57)
$Form1_Button2 = GUICtrlCreateButton("顯示視窗2", 80, 0, 73, 57)
$Form1_Button3 = GUICtrlCreateButton("顯示視窗3", 160, 0, 73, 57)
GUICtrlSetOnEvent($Form1_Button1, "main")
GUICtrlSetOnEvent($Form1_Button2, "main")
GUICtrlSetOnEvent($Form1_Button3, "main");註冊按鈕點擊消息到自訂函數main 裡面進行處理
GUISetState(@SW_SHOW)
While 1
Sleep(3000)
WEnd
Func main()
Switch @GUI_CtrlId;根據巨集@GUI_CtrlId 來判斷消息
Case $GUI_EVENT_CLOSE
Switch @GUI_WinHandle;根據巨集@GUI_WinHandle 來判斷產生關閉消息的視窗消息
Case $Form1
Exit
Case $Form2
GUIDelete($Form2)
$Form2_Button2=0
GUISetState(@SW_SHOW,$Form1)
Case $Form3
GUIDelete($Form3)
$Form3_Button1=0
GUISetState(@SW_SHOW,$Form1)
Case $Form4
GUIDelete($Form4)
$Form4_Combo1=0
$Form4_Button1=0
GUISetState(@SW_SHOW,$Form1)
EndSwitch
Case $Form1_Button1
GUISetState(@SW_HIDE,$Form1)
_IPSM() ;1
Case $Form2_Button2
MsgBox(0,"","你點的是視窗1的按鈕")
Case $Form1_Button2
GUISetState(@SW_HIDE,$Form1)
_IEPZ() ;2
Case $Form3_Button1
MsgBox(0,"","我是視窗2的按鈕")
Case $Form1_Button3
GUISetState(@SW_HIDE,$Form1)
_PRINTGZ() ;3
Case $Form4_Combo1
MsgBox(0,"","222222")
Case $Form4_Button1
MsgBox(0,"","我是視窗3的按鈕")
EndSwitch
EndFunc
Func _PRINTGZ()
$Form4 = GUICreate("窗口3", 388, 79, 507, 443)
GUISetOnEvent($GUI_EVENT_CLOSE, "main")
$Form4_Combo1 = GUICtrlCreateCombo("1|2|3", 120, 32, 170, 25, BitOR($CBS_DROPDOWN,$CBS_AUTOHSCROLL))
GUICtrlSetOnEvent($Form4_Combo1, "main")
$Form4_Button1 = GUICtrlCreateButton("我是視窗3按鈕", 296, 32, 65, 25)
GUICtrlSetOnEvent($Form4_Button1, "main")
GUISetState(@SW_SHOW)
EndFunc
Func _IEPZ()
$Form3 = GUICreate("窗口2", 428, 400, 259, 376,-1,-1,$Form1)
GUISetOnEvent($GUI_EVENT_CLOSE, "main")
$Form3_Button1 = GUICtrlCreateButton("視窗2按鈕", 320, 24, 81, 25)
GUICtrlSetOnEvent($Form3_Button1, "main")
GUISetState(@SW_SHOW)
EndFunc
Func _IPSM()
$Form2= GUICreate("窗口1", 844, 516, 217, 174,-1,-1,$Form1)
GUISetOnEvent($GUI_EVENT_CLOSE, "main")
$Form2_Button2 = GUICtrlCreateButton("我是視窗1的按鈕", 664, 24, 73, 33)
GUICtrlSetOnEvent($Form2_Button2, "main")
GUISetState(@SW_SHOW)
EndFunc
原因是 你把 三個窗口 的 按鈕 放在一起 判斷
第一個窗口 第一個按鈕 產生控件 $Form2_Button2 系統假設 排定 給他 4
當你退出 這個窗口 $Form2_Button2 這個變數 還是 4
當你執行 第二個窗口 一樣產生 $Form3_Button1 這個 系統 一樣 給 4
按下後 因為你的 判斷都在一起 就會淺扯 你 寫的順序 因此 判斷到第一個窗口的按鈕 |