방개
비밀번호를 잊어버리셨나요?

질문

함수 매개변수, Gui 버튼 관련 질문있습니다.

    • 글자 크기

1. 함수에서 매개변수를 빈칸으로 두고 작동가능한 방법이 있는지 궁금합니다.

 

함수(5, , )

return

 

함수(a, b, c)

{

   return a

}

 

 

2. Gui버튼을 토글처럼 사용하려던 와중에 Loop중이면 같은 버튼으로는 인터럽트 발생이 없고, 다른 버튼으로는 작동이 되긴 했으나 return을 받으면 Loop로 돌아가는 것을 확인했습니다. 다른 버튼에 Reload나 ExitApp같은 명령어를 주거나 Loop문을 break할 수 있는 조건을 줘서 버튼 2개로는 해결이 가능할 것 같은데, 버튼 1개로 Loop문을 벗어나면서 토글기능을 할 수 있을지 궁금합니다.

Gui, Add, Text, w100 h20 v상태 Center,
Gui, Add, Button, w100 h20 v시작 g시작, 시작
Gui, Add, Button, w100 h20 v종료 g종료, 종료

test := true

Gui, Show
return

시작:
if(test = true)
{
	test := false
	Loop
	{
		GuiControl,, 상태, 시작
		GuiControl,, 시작, 중지
	}
}
else
	Reload		;이 부분은 동작하지 않습니다.
return

종료:
Reload

GuiClose:
ExitApp

 

 

3. 다른 프로그램에서 성능향상을 위해 스크린샷을 1번만 한 상태에서 클립보드(?)에서 이미지 비교만 하는 방식을 쓰고 있는데 오토핫키에서도 가능할 지 궁금합니다.

 

 

4. 일반적으로 프로그램을 만들 때, Gui를 먼저 구성하는지 기능을 먼저 만드는지 궁금합니다.

 

5. 코드 수정을 하다보면 뭔가를 추가하고 싶을 때, 기존것은 남겨두고 추가를 하는데 완성도가 낮다보니 자잘한 부분을 수정하면서 기능이 추가되고, 기존에 남겨둔게 의미가 없어져버리는 경우가 많습니다. 자잘한 것을 수정하는 것도 우연히 찾아내다보니 완성도를 먼저 높이는 것도 어렵습니다.

혹시나 기능을 추가하는 와중에 크게 꼬여버리면, 자잘한 기능을 수정했던 것도 같이 헷갈릴 것 같은데, 기능을 추가하는 와중에 완성도 부분에서 기존 코드가 수정된다면 기존에 남겨둔 것도 바로바로 수정해둬야 하는게 상식적으로는 맞겠지만 실제로도 필요한 과정인지 궁금합니다.

 

6. 멀티 Gui에서 Gui, 2:Default 이후 다시 처음 Gui를 기본 Gui로 하려면 Gui, Default 로 해주면 되는지 궁금합니다.

 

7. Gui, 2:Default 이후에도 GuiClose는 처음에 열린 Gui에 맞춰서 작동하고, 2GuiClose는 2레이블에 해당하는 Gui에 맞춰서 작동했는데,

올바르게 작동된 것인지 궁금하고, Gui, 2:Default 이후에 2GuiClose에서 Gui, 2:Cancel로 창이 닫혔어도 2Gui가 기본 Gui로 유지되고 있는것인지 궁금합니다.

 

    • 글자 크기
댓글 2
  • 2020.3.20 13:16 댓글

    1. 말씀드린 적 있었는데, 함수 원형에 대입문을 넣어주시면 됩니다.

    
    함수(5)
    return
     
    함수(a, b := "", c := "")
    {
       return a
    }

    굳이 ""를 대입하진 않아도 되고요, 함수 내에서 쓸 b, c의 초기값을 넣어주시면 됩니다

     

    2. 글쎄요 저는 진행 우선순위를 이용해서 스크립트를 작성하지 않아서요. 너무 불명확하다보니..

     

    flag := !flag
    Loop
    {
        if (Flag = true)
            break
    }

     이런식으로 될까요? 안될까요? 모르겠네요..ㅎㅎ

     

    3. GDIP을 쓰면 될거같고, 사실 누군가가고공개한 함수도 있을거예요. Autohotkey gdip image compare등으고 검색해보시면 될것 같습니다. 해보진 않았어요

     

    4. '구상'은 기능먼저하고 '코딩'은 GUI부터 하는 편입니다.. ^^ 일반적인건 모르고, 저는 그래요.

     

    5. 의미가 없어진 코드는 삭제하는게 맞죠. 그렇게 남는 코드가 '레거시 코드'가 되고, 가끔 유지보수 잘못하면 프로그램 꼬이게하는 주범이 되니 바로처리해주는게 낫습니다.

     

    6. 네, 맞습니다.

     

    7. 네, LabelGuiclose: 식으로 쓰면 됩니다. Default GUI가 없어지면.. 모르겠네요 어떻게 되는지

  • 프날님께
    차랑글쓴이
    2020.3.20 14:24 댓글

    감사합니다! 2번은 안되는 것 같습니다. 7번은 개인적인 테스트로는 return을 만나면 자동으로 처음 Gui가 기본 Gui로 바뀌는 거 같은데 추가적인 테스트방법이 안 떠올라서 확실한 검증이 안되네요.

     

    2번 토글기능은 버튼 2개 겹쳐놓고, hide / show로 해결했습니다.

댓글 달기

서버에 요청 중입니다. 잠시만 기다려 주십시오...