프날 오토핫키 강좌
누르면 강좌 리스트가 나와요
프날 오토핫키 강좌

⚠ 이 강좌는 오토핫키 v1을 다룹니다

지금 보시는 강좌는 구버전 오토핫키(v1.1)를 다루고 있습니다. 따라서 본 강좌의 내용은 현재 최신 오토핫키 버전 (v2.0)과 호환되지 않습니다. 구버전의 정보가 필요한 것이 아니라면, 가능한 한 새로운 사이트에 작성한 v2 강좌(https://ahkv2.pnal.dev)를 봐주시길 바랍니다.

[프날 오토핫키] 50. Button과 g레이블

지난 강좌에서 빈 창을 만들어보았다면, 이번엔 빈 창에 버튼을 만들어볼겁니다. 더불어, 버튼을 클릭하면 대화 상자가 출력되는 간단한 스크립트를 만들어보겠습니다.

 


 Button 

Button 컨트롤은 아래 구문으로 추가할 수 있습니다.

Gui, Add, Button, x위치 y위치 w폭 h너비, 글자

지난 강에서 빈 창을 만들었던 예제와 결합하면 아래처럼 됩니다.

 

Gui, Add, Button, x10 y20 w100 h20, 버튼글씨
Gui, Show, w300 h300, 50강
return

GuiClose:
ExitApp

50강_1.ahk
0.00MB

Add구문을 Show보다 먼저 해주었죠? 관례입니다. 모든 컨트롤이 로드 된 후 GUI창을 보여줄 수 있기도 하고요.

 

버튼이 (10, 20)위치에 폭 100, 높이 20의 크기로 만들어졌습니다. 예시 스크립트에서 x y w h 부분을 조정하면서 버튼의 위치와 크기가 변하는 것을 보세요.

 

아, 이 때 X나 Y좌표는 여러분께 알려드린 좌표 체계와 CoordMode의 영향을 받지 않고, 그냥 GUI창 내에서의 상대좌표입니다. 편하게 쓰시면 됩니다.

 


 이벤트를 받아주는 g레이블 

버튼을 만들기만 하면 의미가 없습니다. 간단하게 버튼을 누르면 대화 상자가 출력되는 구문을 만들어보겠습니다.

이럴 때 필요한 것이 g레이블입니다.

 

Goto에서 레이블의 개념을 본 적이 있습니다. 어떠한 서브루틴으로 이동시키기 위해서 레이블이라는 고유한 이름을 달아주었습니다.

GUI 부분에서 나오는 레이블 또한 "이름"을 뜻합니다. 이에 대해선 강좌를 진행하시다보면 이해하시게 될겁니다.

 

다시 본론으로 돌아와서, g레이블의 gGoto를 뜻합니다. 즉, 버튼을 눌렀을 때 스크립트에 어떤 서브루틴으로 이동할 지 지정할 수 있습니다. 아래처럼 사용해서 말입니다.

Gui, Add, Button, x10 y20 w200 h30 gBtn, 눌러주세요
Gui, Show, w220 h70, 50강
return

Btn:
MsgBox, 눌렀습니다.
return

GuiClose:
ExitApp

50강_2.ahk
0.00MB

스크립트가 길어졌다고 당황해하지 마세요.

 

우선, 버튼을 추가해주는 부분(1번째 줄)에 gBtn이라는 문구가 보입니다. 이것이 g레이블입니다. 레이블명은 Btn이고요. 주의하실 점은, x y w h부분과 하나의 매개변수라는 것입니다. 즉, 앞에 콤마를 찍지 않습니다.

 

g레이블은 동작이 발생하면 같은 레이블명을 가진 서브루틴으로 이동시켜줍니다.

두번째 문단에 Btn: 서브루틴이 보이지요? MsgBox하나를 띄우고 return됩니다.

 

예제를 작동시켜보면 버튼을 눌렀을 때 MsgBox가 뜨는 것을 알 수 있습니다.

Goto는 눈에 흙이 들어가도 쓰지 말자고 강좌했지만, g레이블은 되려 권장됩니다.

 

g레이블을 쓰지 않고도 버튼 이벤트를 감지하는 방법이 있는데, 권장되지 않는 방법이니 설명드리지 않겠습니다.

 


요약해볼까요, 아래 내용은 이번 강을 요약한 것입니다. 서브루틴과 레이블의 개념을 모르신다면 Part.1의 Goto강좌를 재정독 하시길 부탁드립니다.

[GUI에 버튼 추가하는 구문]
Gui, Add, Button, x위치 y위치 w너비 h높이, 버튼글씨
- Gui, Show 구문 전에 써준다.
- 필요시 g레이블을 삽입하되, x y w h와 같은 매개변수임을 생각한다.

[g레이블]
동작이 발생하면 레이블명으로 이루어진 서브루틴으로 이동한다.
- g레이블의 g는 Goto의 약자이다. (그렇지만 goto와 다르게, 안심하고 써도 된다)

 


| 50. Button과 g레이블 |