⚠ 이 강좌는 오토핫키 v1을 다룹니다
지금 보시는 강좌는 구버전 오토핫키(v1.1)를 다루고 있습니다. 따라서 본 강좌의 내용은 현재 최신 오토핫키 버전 (v2.0)과 호환되지 않습니다. 구버전의 정보가 필요한 것이 아니라면, 가능한 한 새로운 사이트에 작성한 v2 강좌(https://ahkv2.pnal.dev)를 봐주시길 바랍니다.
[프날 오토핫키] 여러 GUI창 다루기
오토핫키를 사용하면서 여러 개의 GUI 창을 다룰 일이 생깁니다.
레이블을 이용하여 쉽게 구현할 수 있는데, 첫 번째 파라미터에 레이블을 달아주어서 GUI를 구분할 수 있습니다.
먼저, 일반적인 GUI 생성 구문을 보겠습니다.
Gui, Add, edit, x20 y20 w150 h20 vEdit, 0
Gui, Add, button, x20 y60 w150 h20 gBtn, 눌러주세용
Gui, Show, w190 h100, Multiple GUI
a := 0
return
Btn:
a++
GuiControl,,Edit,%a%
return
GuiClose:
ExitApp
버튼을 누르면 Edit의 내용이 1씩 증가하는 간단한 GUI입니다.
이렇게 우리는 지금까지 Gui 명령어 뒤에 Add나 Show같은 매개변수를 이용하여 컨트롤을 생성하고 창을 표시했습니다.
이러한 일반적인 구문에 레이블을 달아서 두 번째 GUI의 요소를 생성하고, 두 번째 GUI 창을 표시할 수 있습니다.
레이블을 다는 위치는 "첫 번째 매개변수"이고, 레이블 명은 자유롭게 써주시면 됩니다.
Gui, Add, edit, x20 y20 w150 h20 vEdit, 0
Gui, Add, button, x20 y60 w150 h20 gBtn, 눌러주세용
Gui, Show, w190 h100, 1번
Gui, 2:Add, edit, x20 y20 w150 h20 vEdit, 0
Gui, 2:Show, w190 h60, 2번
a := 0
return
Btn:
a++
GuiControl,,Edit,%a%
return
GuiClose:
ExitApp
2번 창을 띄워보았습니다. Gui, 2:Add를 통해 두번째 창에 컨트롤을 만들었으며, Gui, 2:Show를 통해 두번째 창을 표시했습니다. (5번 줄, 6번 줄)
이때, 아무 레이블을 쓰지 않은 GUI가 "기본 GUI (Default GUI)"가 됩니다. "기본 GUI" 개념은 위 예제로 확인할 수 있는데요, 1번 GUI에서 버튼을 누르면 1번 창에 있는 Edit의 숫자만 증가됩니다. 1번 창 Edit와 2번 창 Edit의 v레이블이 같은데도 말이죠.
물론, GuiControl 구문도 우선 아까 말씀드렸다 싶이 레이블을 이용해 대상을 지정해 줄 수 있습니다.
GuiControl, 2:, Edit, %a%
위와 같이 말입니다. 위 예제에서 GuiControl 구문을 이걸로 바꾼 후 실행해보시면, 버튼을 누를 때마다 두 번째 창 Edit의 숫자가 바뀌는 것을 볼 수 있습니다.
그런데, 두 번째 GUI를 닫아도 프로그램이 종료되지 않습니다. GuiClose: 레이블 또한 "기본 GUI"에서만 작동하기 때문입니다. 만약 두 번째 GUI를 담당하는 GuiClose:를 만들고싶다면 앞에 레이블명을 써주시면 됩니다.
생성한 GUI의 레이블이 [2, Label, 두번째] 일 때...
2GuiClose:
LabelGuiClose:
두번째GuiClose:
아래 예제는 버튼을 누를 때마다 "첫번째 창 Edit의 숫자는 올라가고, 두 번째 창 Edit의 숫자는 내려가는 프로그램"입니다. 두 GUI 중 아무 창이나 닫으면 프로그램은 종료됩니다.
Gui, Add, edit, x20 y20 w150 h20 vEdit, 0
Gui, Add, button, x20 y60 w150 h20 gBtn, 눌러주세용
Gui, Show, w190 h100, 1번
Gui, 2:Add, edit, x20 y20 w150 h20 vEdit, 0
Gui, 2:Show, w190 h60, 2번
a := 0
b := 0
return
Btn:
a++
b--
GuiControl,,Edit,%a%
GuiControl,2:,Edit,%b%
return
2GuiClose:
GuiClose:
ExitApp
여담 : 기본 GUI를 바꾸는 법 Gui, Default 구문을 사용하여 기본 GUI를 바꿀 수 있습니다. 역시 첫 번째 매개변수에 레이블을 사용하여 대상을 지정할 수 있습니다.
Gui, 2:Default → [2]라는 레이블을 가진 GUI를 기본 GUI로 설정 |
강좌에서는 편의상 두 번째 GUI의 레이블 명을 [2]로 통일했지만, 꼭 2가 아니어도 되며 영문이나 한글이어도 됩니다. "레이블"이니까요. |