프날 오토핫키 강좌  v2

⚠ 이 강좌는 오토핫키 v2를 다룹니다

지금 보시는 강좌는 과거 오랜 시간동안 알려진 오토핫키(v1.1)의 차세대 버전인 오토핫키 v2를 다루고 있습니다.
만약 구버전인 '오토핫키 v1.1'의 강좌를 찾으신다면 프날 오토핫키 강좌(https://pnal.kr)를 봐주시면 되지만, 새로 오토핫키를 배우신다면 v2 버전을 배우시는 것을 강력히 추천드립니다.

71. Gui 객체의 사용


저번 강에서 새 Gui 객체를 만들고, 이를 화면에 표시해보았습니다. Gui 객체 또한 속성과 메서드를 가지고 있다는 점도 배웠고, 그 중 하나인 Show() 메서드의 사용법도 배웠었죠.

이번 강에선 Gui 객체가 가지고 있는 다른 속성과 메서드를 알아보며 Gui 객체의 기본적인 사용법을 알아볼 것입니다.

Gui 객체의 속성

Gui 객체는 아래와 같은 속성을 가지고 있습니다.

속성설명
BackColor창의 배경색
Hwnd창의 핸들(고윳값)
Title창의 제목

더 있지만 일단 자주 쓰이는 속성 세 가지만 가져왔습니다. BackColor와 Title의 경우 원하는 속성을 재설정하거나 가져올 수 있고, Hwnd는 고윳값이기 때문에 값을 가져오기만 할 수 있습니다.

1MyGui.BackColor := 0xFF0000 ;배경색을 빨간색(0xFF0000)으로 재설정
2MyGui.Title := "새 타이틀" ;타이틀 변경
3MsgBox(MyGui.Title) ;타이틀 출력
4MsgBox(MyGui.Hwnd) ;핸들값 출력

Gui 객체의 메서드

이전에 썼던 Show() 메서드를 포함하여, Gui 객체는 많은 메서드를 가지고 있습니다. 이곳의 메서드를 이용하여 Gui 객체에 원하는 동작을 명령할 수 있습니다. 전부 설명하진 못하니 역시 꼭 알아야하는 몇 가지만 적어보겠습니다.

메서드매개변수반환값역할
Add()ControlType [, Options, Text]GuiControl 객체Gui 객체에 컨트롤을 추가합니다.
Destroy()Gui 객체와 창을 소멸시킵니다.
Hide()창을 숨깁니다.
Show()[Options]창을 보입니다.
Maximize()창을 최대화합니다.
Minimize()창을 최소화합니다.
Move()[X, Y, Width, Height]창의 위치와 크기를 변화시킵니다.
OnEvent()EventName, Callback [, AddRemove]창 이벤트를 감지하도록 설정합니다.
Opt()Options창 옵션을 설정합니다.

매개변수와 반환값이 없는 메서드는 어렵지 않죠? 그냥 Gui.Hide()와 같이 인수를 전달해주지 않고 쓰면 지정된 동작을 하는 것이 전부이니 굳이 설명하지 않겠습니다. 그 외에 눈여겨 볼 메서드가 두 가지 있는데, 하나는 Add() 메서드고 다른 하나는 OnEvent() 메서드입니다. 그러나 둘 모두 지금 상세한 사용법을 배우진 않을 것입니다.

Add() 메서드는 창에 컨트롤을 추가하는데 쓰입니다. 그 과정과 상세한 방법은 다음 강에서 배우도록 하겠으니, 일단 'Add() 메서드로 컨트롤을 추가하는구나!' 라고만 알고 계시면 됩니다.

OnEvent() 메서드의 설명엔 '이벤트'라는 생소하지만 아주 중요한 단어가 들어가있습니다. 이 '이벤트'에 대해선 창에 컨트롤을 추가해본 후에 더욱 쉽게 설명드릴 수 있겠군요. 이 역시 여기서 설명드리지 않겠습니다. 바로 두 강 후에 쉽게 배울 기회가 있습니다.

그 외에 Opt() 메서드는 저번 강에서 배웠던 Gui() 생성자의 Options 매개변수와 같은 역할을 한다는 점은 눈치 채실 수 있을 것입니다. 당연히 같은 방식으로 사용합니다. 따라서, 이 메서드를 이용하면 처음 지정했던 Gui 옵션을 제거하거나, 추가하거나, 대치할 수 있을 것입니다.

실습

1. 창을 보이거나 숨기기

간단하게 핫키를 누르면 창을 보이거나 숨기는 예시를 실습해 보겠습니다.

1NewGui := Gui(, "새 GUI 프로그램")
2NewGui.Show("w300 h300")
3return
4
5F1::NewGui.Show()
6F2::NewGui.Hide()
예제 1. 핫키로 창을 보이게 하거나 숨기기

어렵지 않죠? F1을 누르면 NewGui의 Show 메서드가 실행되어 창이 나타나고, 다시 F2를 누르면 창이 숨겨집니다. 창을 숨긴다고 객체가 사라진 것이 아니기 때문에 다시 Show하면 원래 위치에 원래 설정을 가지고 그대로 나타난다는 점을 기억하세요.

굳이 하나 더 눈여겨 볼 점을 꼽자면, 어차피 F1 지역과 F2 지역은 '자동 실행 스레드'가 아니기 때문에 3번 줄의 return은 필요가 없습니다. 그러나 GUI를 만드는 1~2번 줄 밑으로 더이상 코드가 진행되지 않는다는 점을 명시하기 위해 적어준 것입니다. 그러니까 코드상 역할은 하지 않지만, 우리가 볼 때 더욱 원활히 기능을 파악하게 해준다는 '코드 밖의 기능'이 있는 것이죠.

또, 핫키가 있기 때문에 창을 닫아도 프로그램이 종료되지 않습니다. ExitApp을 사용하여 프로그램을 종료하여야 하는데, '창을 닫을 때 자동으로 ExitApp을 호출'하는 방법은 향후 '이벤트' 개념을 배우면 알게 될 것입니다.

다음 강에선 드디어 우리가 만든 창에 컨트롤을 추가해봅시다. 네, 드디어 우리 GUI 객체에 버튼을 추가할 수 있어요!

질문하러 가기