Что нового

Создание родительского/дочернего окна

jilexandr

Знающий
Сообщения
129
Репутация
6
Хотя в теме написал одно, но связи между окнами не будет, не знал что придумать :-[

Можете сделать подобное, только правильно? И с объяснением почему так? Смотрел некоторые примеры, и вот понять почему именно так не смог, и сделал по своему, по-нубски :whistle:

Код:
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=

$Form1 = GUICreate("1", 220, 83, Default, Default)
$Button1 = GUICtrlCreateButton("Открыть", 8, 36, 105, 25)
$Label1 = GUICtrlCreateLabel("Приветствую вас!", 8, 8, 250, 20)
GUICtrlSetFont(-1, 10, 400, 0, "Verdana")
GUICtrlSetColor(-1, 0xFF0000)
$Button2 = GUICtrlCreateButton("Выход", 118, 36, 75, 25)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

Func _load() ;начало прорисовки окна
GUIDelete($Form1)
$Form2 = GUICreate("2", 255, 241, 228, 124)
$Button3 = GUICtrlCreateButton("$Button3", 31, 8, 193, 33)
$Group1 = GUICtrlCreateGroup("Настройки", 7, 48, 241, 177)
GUICtrlSetColor(-1, 0x0000FF)
$Icon1 = GUICtrlCreateIcon("C:\Program Files\PSPad editor\PSPad.exe", -1, 30, 80, 192, 128)
GUICtrlCreateGroup("", -99, -99, 1, 1)
GUISetState(@SW_SHOW)

While 1
	$nMsg = GUIGetMsg()
	Switch $nMsg
		Case $GUI_EVENT_CLOSE
			Exit
		Case $Button3
				MsgBox(16+270336,"2","$Button3")
	EndSwitch
WEnd
EndFunc  ;конец прорисовки окна

While 1
	$nMsg = GUIGetMsg()
	Switch $nMsg
		Case $GUI_EVENT_CLOSE
			Exit
		Case $Button2
			Exit
		Case $Button1
			If MsgBox(4+64+270336,"1","Realy?") = 7 Then
			Else
				If Not WinActivate("[CLASS:#32770]", "") Then
					MsgBox(16+270336,"Error","Вы забыли что-то запустить!")
				Else
					_load()
					EndIf
				EndIf
	EndSwitch
WEnd



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

или мой вариант не настолько плох?)
 

Zaramot

I ♥ AutoIt
Сообщения
1,160
Репутация
660
Код:
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>

Global $Button3 = -1, $Icon1 = -1

$Form1 = GUICreate("1", 220, 83, Default, Default)
$Button1 = GUICtrlCreateButton("Открыть", 8, 36, 105, 25)
$Label1 = GUICtrlCreateLabel("Приветствую вас!", 8, 8, 250, 20)
GUICtrlSetFont(-1, 10, 400, 0, "Verdana")
GUICtrlSetColor(-1, 0xFF0000)
$Button2 = GUICtrlCreateButton("Выход", 118, 36, 75, 25)
GUISetState()

$Child = _load($Form1)

While 1
    $nMsg = GUIGetMsg(1)
    Switch $nMsg[0]
        Case $GUI_EVENT_CLOSE, $Button2
            If $nMsg[1] = $Form1 Then Exit
			If $nMsg[1] = $Child Then GUISetState(@SW_HIDE, $Child)
		Case $Button1
			GUISetState(@SW_SHOW, $Child)
			If Not WinActive($Child) Then WinActivate($Child)
        Case $Button3
            If MsgBox(4+64+270336,"1","Realy?") = 7 Then

            Else
                If Not WinActivate("[CLASS:#32770]", "") Then
                    MsgBox(16+270336,"Error","Вы забыли что-то запустить!")
                Else
                    MsgBox(0, '', '')
                EndIf
			EndIf
    EndSwitch
WEnd

Func _load($Parent) ;начало прорисовки окна
	Local $Form2
	$Form2 = GUICreate("2", 255, 241, 100, 200, -1, -1, $Parent)
	$Button3 = GUICtrlCreateButton("$Button3", 31, 8, 193, 33)
	$Group1 = GUICtrlCreateGroup("Настройки", 7, 48, 241, 177)
	GUICtrlSetColor(-1, 0x0000FF)
	$Icon1 = GUICtrlCreateIcon("C:\Program Files\PSPad editor\PSPad.exe", -1, 30, 80, 192, 128)
	GUICtrlCreateGroup("", -99, -99, 1, 1)
	Return $Form2
EndFunc  ;конец прорисовки окна
 
Автор
J

jilexandr

Знающий
Сообщения
129
Репутация
6
Zaramot

можете рассказать про то что находиться внутри цикла?

$nMsg = GUIGetMsg(1) :scratch:
Switch $nMsg[0]
и т.д.
 

Zaramot

I ♥ AutoIt
Сообщения
1,160
Репутация
660
$nMsg = GUIGetMsg(1) - возвращает массив, содержащий события и расширенную информацию (по умолчанию 0)
$nMsg[0] - 0 или ID-события или идентификатор элемента управления
$nMsg[1] - Дескриптор окна события
 
Верх