Что нового

[Элементы GUI] Выход одного [GUI] из функции

Zero

Новичок
Сообщения
11
Репутация
0
Имеется следующий скрипт, создаю элемент [GUI] в нем функию, при вызове функции вызывается
еще один [GUI], как сделать что б при вызове функции [Setting()] и нажатии на [$BUTTON2] закрывался только [GUI] из функции? А первый оставался.
Код:
$hGUI = GUICreate("Test1", 600, 380, -1, -1, -1, $WS_EX_ACCEPTFILES)
GUISetState(@SW_SHOW, $hGUI)
Case $sSetting_Button
$skey = RegRead ("HKEY_CURRENT_USER\Software\Access Restriction\Setting", "Key")	
If $skey = "" Then				
    Setting()
Else
    Setting2()
EndIf
;-------------------------------------------------------------------------------------------------------------
Func Setting()	
$GUI=GUICreate("Test2", 410, 310, 192, 114, 0, 0)
$INPUT1=GUICtrlCreateInput("",85,110,305,25)
$INPUT2=GUICtrlCreateInput("",85,140,305,25)
$BUTTON=GUICtrlCreateButton("Сохранить",10,227,100,25)
$BUTTON2=GUICtrlCreateButton("Закрыть",115,227,100,25)
GuiCtrlCreateLabel("Пароль на выход из программы:", 10, 145)
GUISetState()
GuiCtrlCreateLabel("Пароль на настройки:", 10, 115)
GUISetState()
GuiCtrlCreateGroup("", 2, 95, 396, 80)
GUICtrlCreatePic('', 0, 0, 400, 100)	
$sSet1 = RegRead ("HKEY_CURRENT_USER\Software\Test1\Setting", "Set1")
$Radio1 = GuiCtrlCreateCheckbox ("Запретить выход из программы", 20, 180, 250, 20)
If $sSet1 = 1 Then 
	GuiCtrlSetState($Radio1, $GUI_CHECKED)
EndIf
 while true
  Switch GUIGetMsg()
   case -3
    exitloop
	case $BUTTON
	RegWrite("HKEY_CURRENT_USER\Software\Access Restriction\Setting", "Key", "REG_SZ", GUICtrlRead($INPUT1))
	RegWrite("HKEY_CURRENT_USER\Software\Access Restriction\Setting", "Key2", "REG_SZ", GUICtrlRead($INPUT2))
If GUICtrlRead($Radio1) = $GUI_CHECKED Then
	RegWrite("HKEY_CURRENT_USER\Software\Access Restriction\Setting", "Set1", "REG_SZ", "1")
Else
	RegWrite("HKEY_CURRENT_USER\Software\Access Restriction\Setting", "Set1", "REG_SZ", "0")
EndIf
	Case $BUTTON2
		Exit
	EndSwitch
	wend
EndFunc
 
Автор
Z

Zero

Новичок
Сообщения
11
Репутация
0
Работает однократно, при повторном нажатии [$btShow] не работает.
 
Автор
Z

Zero

Новичок
Сообщения
11
Репутация
0
Спасибо, то что нужно.
 

Zaramot

I ♥ AutoIt
Сообщения
1 160
Репутация
658
Ещё можно через WinClose или WinKill.
 

edward_freedom

Осваивающий
Сообщения
200
Репутация
44
Код:
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Form1", 172, 180, 192, 124)
$F1Button1 = GUICtrlCreateButton("Form 2", 16, 16, 139, 57)

$Form2 = GUICreate("Form1", 188, 175, 302, 218)
$F2Button1 = GUICtrlCreateButton("Form 1", 16, 16, 147, 57)

GUISetState(@SW_SHOw, $form1)
#EndRegion ### END Koda GUI section ###

While 1
	$nMsg = GUIGetMsg()
	Switch $nMsg
		Case $GUI_EVENT_CLOSE
			Exit
		case $F1Button1
			GUISetState(@SW_SHOW, $Form2)
		case $F2Button1
			GUISetState(@SW_hide, $Form2)

	EndSwitch
WEnd
 

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5 379
Репутация
2 713
Дочерние окна удобнее оформлять в виде отдельных функций, а не городить все в одну кучу:

Код:
#Include <GUIConstantsEx.au3>

$hForm = GUICreate('Main GUI', 400, 400)
$Button = GUICtrlCreateButton('Settings', 165, 366, 70, 23)
GUISetState()

While 1
	$Msg = GUIGetMsg()
	Switch $Msg
		Case $GUI_EVENT_CLOSE
			Exit
		Case $Button
			_SettingsDlg($hForm)
	EndSwitch
WEnd

Func _SettingsDlg($hParent = 0)

	Local $hSettings

	GUISetState(@SW_DISABLE, $hParent)

	$hSettings = GUICreate('Settings', 600, 200, -1, -1, -1, -1, $hParent)
	GUISetState()

	While 1
		$Msg = GUIGetMsg()
		Switch $Msg
			Case $GUI_EVENT_CLOSE
				ExitLoop
		EndSwitch
	WEnd

	GUISetState(@SW_ENABLE, $hParent)
	GUIDelete($hSettings)
EndFunc   ;==>_SettingsDlg
 
Верх