Тема: AHK: Открытие второго окна GUI относительно первого
Доброго времени суток. Вот в чем проблема, нужно сделать открытие второго окна относительно первого в скрипте, выглядеть должно это примерно так(не обращайте внимание на содержимое 2 окно, будет дорабатываться):
Пробовал сделать по данному уроку, но второе окно не выезжает.
Вот код который у меня получился:
Gui, +hwndhGui1
Gui, Font, s12 cBlack, Montserrat SemiBold
Gui, Add, Text, x0 y20 w320 h20 +0x200 +Center, Помощник для военнослужащего
Gui, Font
Gui, Font, s10 cBlack, Montserrat Medium
Gui, Add, Edit, x17 y70 w135 h20 vname, %name%
Gui, Add, Text, x169 y70 w100 h20 +Left, Имя
Gui, Add, Edit, x17 y107 w135 h20 vfamily, %family%
Gui, Add, Text, x169 y107 w100 h20 +Left, Фамилия
Gui, Add, Edit, x17 y144 w135 h20 vpnumber, %pnumber%
Gui, Add, Text, x169 y144 w115 h20 +Left, Номер телефона
Gui, Add, Edit, x17 y181 w135 h20 vrank, %rank%
Gui, Add, Text, x169 y181 w50 h20 +Left, Звание
Gui, Add, Edit, x17 y218 w135 h20 vsubdivision, %subdivision%
Gui, Add, Text, x169 y218 w115 h20 +Left, Подразделение
Gui, Font
Gui, Font, s10 cBlack, Montserrat Medium
Gui, Add, Button, x17 y268 w84 h24 gSave, Сохранить
Gui, Add, Button, x118 y268 w84 h24 gWagering vWagering, % Chr(0x2192)
Gui, Add, Button, x219 y268 w84 h24, Важно
Gui, Add, Button, x17 y309 w84 h24 gHelp, Помощь
Gui, Add, Button, x118 y309 w84 h24 gClose, Закрыть
Gui, Add, Button, x219 y309 w84 h24 gReload, Рестарт
Gui, Add, Text, x17 y363 w100 h20, Автор: Betskiy
Gui, Add, Link, x230 y363 w71 h20, <a href="https://vk.com/id188433015">Вконтакте</a>
Gui, Add, Text, x0 y423 w320 h20 +Center, Специально для Amazing Role Play
Gui, Show, w320 h463, Army Helper
Gui, 2:+hwndhGui2 +Owner4 -Caption +Border
Gui, 2: Add, Tab3, x0 y0 w1048 h463, Основное|КМБ|Посты 1|Посты 2
Gui, 2: Tab, 1
Gui, 2: Add, Text, x368 y40 w234 h23, Отыгровки используемые в помощнике
Gui, 2: Add, Text, x16 y72 w108 h23, Команда на русском
Gui, 2: Add, Text, x404 y72 w125 h23, Команда на английском
Gui, 2: Add, Text, x696 y72 w50 h23, Значение
Gui, 2: Add, Text, x16 y112 w120 h23, .разак
Gui, 2: Add, Text, x408 y112 w120 h23, /hfpfr
Gui, 2: Add, Text, x696 y112 w138 h23, Разборка автомата АК-47
Gui, 2: Add, Text, x16 y152 w120 h23, .сбак
Gui, 2: Add, Text, x408 y152 w120 h23, /c,fr
Gui, 2: Add, Text, x696 y152 w120 h23, Сборка автомата АК-47
Gui, 2: Add, Text, x16 y192 w120 h23, .присяга
Gui, 2: Add, Text, x408 y192 w120 h23, /ghbczuf
Gui, 2: Add, Text, x696 y192 w76 h23, Сдача присяги
Gui, 2: Add, Text, x16 y232 w120 h23, .ку
Gui, 2: Add, Text, x408 y232 w120 h23, /re
Gui, 2: Add, Text, x696 y232 w176 h23, Выполнить воинское приветствие
Gui, 2: Add, Text, x16 y272 w120 h23, .визит
Gui, 2: Add, Text, x408 y272 w120 h23, /dbpbn
Gui, 2: Add, Text, x696 y272 w104 h23, Узнать цель визита
Gui, 2: Add, Text, x16 y312 w120 h23, .удост
Gui, 2: Add, Text, x408 y312 w120 h23, /eljcn
Gui, 2: Add, Text, x696 y312 w142 h23, Предъявить удостоверение
Gui, 2: Add, Text, x16 y352 w120 h23, .пп
Gui, 2: Add, Text, x408 y352 w120 h23, /gg
Gui, 2: Add, Text, x696 y352 w94 h23, Спросить паспорт
Gui, 2: Add, Text, x16 y392 w120 h23, .вп
Gui, 2: Add, Text, x408 y392 w120 h23, .dg
Gui, 2: Add, Text, x696 y392 w120 h23, Взять паспорт
Gui, 2: Tab
VarSetCapacity(WI, 60)
OnMessage(0x3, "WM_MOVE")
OnMessage(0x112, "WM_MOVE")
Return
Wagering:
DllCall("GetWindowInfo", Ptr, hGui1, Ptr, &WI)
if i := !i
Gui, 2:Show, % "x" NumGet(WI, 12, "UInt") " y" NumGet(WI, 24, "UInt")
. " h" NumGet(WI, 32, "UInt") - NumGet(WI, 24, "UInt") " hide"
DllCall("AnimateWindow", Ptr, hGui2, UInt, 400, UInt, 0x40000|(i ? 1 : 0x10002))
GuiControl,, Wagering, % Chr(0x2190|(i ? 0 : 2))
return
GuiClose:
ExitApp
WM_MOVE(wp, lp, msg, hwnd)
{
global hGui1, WI, i
static k
if (msg = 0x112)
{
if (wp = 0xF020 && k := 1) // SC_MINIMIZE = 0xF020
Gui, 2:Show, Hide
if (wp = 0xF120 && !(k := 0) && i) // SC_RESTORE = 0xF120
Gui, 2:Show
}
if (!i || hwnd != hGui1 || k = 1)
return
DllCall("GetWindowInfo", Ptr, hGui1, Ptr, &WI)
Gui, 2:Show, % "x" NumGet(WI, 12, "UInt") " y" NumGet(WI, 24, "UInt")
. " h" NumGet(WI, 32, "UInt") - NumGet(WI, 24, "UInt") " NA"
}
Мне не обязательно нужен слайдер, главное чтобы окно открывалось рядом вплотную, и закрывалось на эту же кнопку, ну и при закрытии основного окна тоже закрывалось.
P.S. если что, вот такие ошибки выдает:
Error: Invalid or nonexistent owner or parent window.
Specifically: Owner4
Line#
048: Gui,Add,Button,x17 y309 w84 h24 gHelp,Помощь
049: Gui,Add,Button,x118 y309 w84 h24 gClose,Закрыть
050: Gui,Add,Button,x219 y309 w84 h24 gReload,Рестарт
051: Gui,Add,Text,x17 y363 w100 h20,Автор: Betskiy
052: Gui,Add,Link,x230 y363 w71 h20,<a href="https://vk.com/id188433015">Вконтакте</a>
053: Gui,Add,Text,x0 y423 w320 h20 +Center,Специально для Amazing Role Play
055: Gui,Show,w320 h463,Army Helper
---> 057: Gui,2:+hwndhGui2 +Owner4
058: Gui,2: Add,Tab3,x0 y0 w1048 h463,Основное|КМБ|Посты 1|Посты 2
059: Gui,2: Tab,1
060: Gui,2: Add,Text,x368 y40 w234 h23,Отыгровки используемые в помощнике
061: Gui,2: Add,Text,x16 y72 w108 h23,Команда на русском
062: Gui,2: Add,Text,x404 y72 w125 h23,Команда на английском
063: Gui,2: Add,Text,x696 y72 w50 h23,Значение
064: Gui,2: Add,Text,x16 y112 w120 h23,.разак
The current thread will exit.Error: Invalid option.
Specifically: x y h hide
Line#
088: Gui,2: Tab
090: VarSetCapacity(WI, 60)
092: OnMessage(0x3, "WM_MOVE")
093: OnMessage(0x112, "WM_MOVE")
095: Return
098: DllCall("GetWindowInfo", Ptr, hGui1, Ptr, &WI)
099: if i := !i
---> 100: Gui,2:Show,"x" NumGet(WI, 12, "UInt") " y" NumGet(WI, 24, "UInt") . " h" NumGet(WI, 32, "UInt") - NumGet(WI, 24, "UInt") " hide"
102: DllCall("AnimateWindow", Ptr, hGui2, UInt, 400, UInt, 0x40000|(i ? 1 : 0x10002))
103: GuiControl,,Wagering,Chr(0x2190|(i ? 0 : 2))
104: Return
107: ExitApp
110: {
113: if (msg = 0x112)
114: {
The current thread will exit.Error: Invalid option.
Specifically: x y h hide
Line#
088: Gui,2: Tab
090: VarSetCapacity(WI, 60)
092: OnMessage(0x3, "WM_MOVE")
093: OnMessage(0x112, "WM_MOVE")
095: Return
098: DllCall("GetWindowInfo", Ptr, hGui1, Ptr, &WI)
099: if i := !i
---> 100: Gui,2:Show,"x" NumGet(WI, 12, "UInt") " y" NumGet(WI, 24, "UInt") . " h" NumGet(WI, 32, "UInt") - NumGet(WI, 24, "UInt") " hide"
102: DllCall("AnimateWindow", Ptr, hGui2, UInt, 400, UInt, 0x40000|(i ? 1 : 0x10002))
103: GuiControl,,Wagering,Chr(0x2190|(i ? 0 : 2))
104: Return
107: ExitApp
110: {
113: if (msg = 0x112)
114: {
The current thread will exit.