Что нового

[Окна, Диалоги] Создание нескольких GUI, закрытие каждый по отдельности.

running-frag

why me?
Сообщения
441
Репутация
60
Не могу сообразить как закрывать окна по отдельности допустим у нас есть скрипт показывающий несколько окон. Что то типо ...

Код:
#include <GuiConstants.au3>
#include <WindowsConstants.au3>
Local $GUI_main 
Local $main_action

Local $GUI_log
Local $log_action

Local $GUI_edit
Local $edit_action

$GUI_main 			= GUICreate ("Main", "300", "300", -1, -1)
$bt_open_log		= GUICtrlCreateButton ("New window", 10, 10, 100, 50)
GUISetState (@SW_SHOW)

$GUI_log			= GUICreate ("Log", "200", "200", -1, -1)
$bt_hide_log		= GUICtrlCreateButton ("hide", 10, 10, 100, 50)
GUISetState (@SW_SHOW)

$GUI_edit			= GUICreate ("Edit", "200", "200", -1, -1)
$bt_hide_edit		= GUICtrlCreateButton ("hide", 10, 10, 100, 50)
GUISetState (@SW_SHOW)

While 1
	$main_action = GUIGetMsg()
	$log_action = GUIGetMsg ()
	$edit_action = GUIGetMsg ()

	Select
		Case $main_action = $GUI_EVENT_CLOSE	
	    ; тут закрывается "main" окно + те которые не закрыты
			ExitLoop
			
		Case $log_action = $GUI_EVENT_CLOSE
			; тут закрывается окно log
		
		Case $edit_action = $GUI_EVENT_CLOSE
			; тут закрывается окно edit
			
	EndSelect

WEnd


Как лучше это реализовать, подскажите пожалуста.


Добавлено:
Сообщение автоматически объединено:

Изеняюсь, гугл не сработал сразу. :(
Нашёл ответ тут.
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
967
Код:
#include <GuiConstants.au3>
#include <WindowsConstants.au3>

$hGUI1 = GUICreate ("Main", "300", "300", -1, -1)
$hButton1 = GUICtrlCreateButton ("New window", 10, 10, 100, 50)
GUISetState (@SW_SHOW)

$hGUI2 = GUICreate ("Log", "200", "200", -1, -1)
GUISetState (@SW_HIDE)

While 1
	
	$Msg = GUIGetMsg(1)
	Select
		Case $Msg[0] = $GUI_EVENT_CLOSE
			If $Msg[1] = $hGUI2 Then
				GUISwitch($hGUI2)
				GUISetState(@SW_HIDE)
			ElseIf $Msg[1] = $hGUI1 Then
				Exit
			EndIf
		Case $Msg[0] = $hButton1
			If $Msg[1] = $hGUI1 Then
				GUISwitch($hGUI2)
				GUISetState(@SW_SHOW)
			EndIf
	EndSelect
WEnd
 
Верх