62 - [오토핫키] GUI응용 로딩창

    Progress나 GUI Progress는 진행 순서에 맞게 처음과 끝이 존재하죠? 이번엔 명령어가 아닌 GUI를 응용하여 다른 로딩창을 만들어 볼거에요.

     

     

    예제

    원형 로딩창

    pix := ATan(1)*4  ;파이(3.14)

    piy := ATan(1)*4  ;파이(3.14)

    Gui +LastFound -caption +AlwaysOnTop

    WinSet, TransColor, F0F0F0

    Gui, Font, s6

    Loop, 25

    Gui, Add, Text, x-10 y-10 cRed, ●  ;안보이는곳에 ●를 추가합니다.

    Gui, Font, s15 bold

    Gui, Add, Text, x150 y185, Loading...

    Return

     

    Loading:

    Gui, Show, w400 h400

    loop, 25

    {

      xPo := 190+sin(pix-=0.2)*60  ;x축으로 a+six(pi)*r를 연산합니다. a는 시작 좌표, r은 반지름 값이에요.

      yPo := 190+cos(piy-=0.2)*60  ;y축으로 a+cos(pi)*r를 연산합니다. a는 시작 좌표, r은 반지름 값이에요.

      Guicontrol, Move, Static%A_Index%, x%xPo% y%yPo%  ;●를 이동시켜 로딩화면을 만듭니다.

      Sleep, 15  ;속도를 조절합니다.

    }

    Return

     

    F1::

    SetTimer, Loading  ;로딩창 라벨을 실행합니다.

    ;~Script~

    Sleep, 3000  ;본문을 실행합니다. 임시로 Sleep을 넣었어요.

    SetTimer, Loading, Off  ;로딩창 라벨을 종료합니다.

    Gui, Hide  ;GUI를 감춥니다.

    MsgBox, 로딩완료

    Return

     

    원형으로 돌아가는 로딩창입니다. 수학에서 배우는 삼각함수 그래프를 그리는 방식으로 원을 만들수 있어요.

    Font나 r값을 변경하면 크거나 작게 보여줄 수도 있습니다.

    일반적으로 사용하는 오토핫키L 버전은 멀티 쓰레드를 지원하지 않아서 로딩창의 속도를 조절할 경우 본문에 간섭을 주게 됩니다.

     

     

    원형 로딩창 Run방식

    #SingleInstance force  ;로딩창을 재실행 할때의 확인창 무시

     

    pix := ATan(1)*4  ;파이(3.14)

    piy := ATan(1)*4  ;파이(3.14)

    Gui +LastFound -caption +AlwaysOnTop

    WinSet, TransColor, F0F0F0

    Gui, Font, s6

    Loop, 25

    Gui, Add, Text, x-10 y-10 cRed, ●  ;안보이는곳에 ●를 추가합니다.

    Gui, Font, s15 bold

    Gui, Add, Text, x150 y185, Loading...

    Gui, Show, w400 h400

    Loop

      Loop, 25

      {

        xPo := 190+sin(pix-=0.2)*60  ;x축으로 a+six(pi)*r를 연산합니다. a는 시작 좌표, r은 반지름 값이에요.

        yPo := 190+cos(piy-=0.2)*60  ;y축으로 a+cos(pi)*r를 연산합니다. a는 시작 좌표, r은 반지름 값이에요.

        Guicontrol, Move, Static%A_Index%, x%xPo% y%yPo%  ;●를 이동시켜 로딩화면을 만듭니다.

        sleep, 15

      }

    Return

     

    ;======== 여기까지 로딩창 스크립트, 파일명 "Loading.ahk" ========

     

    F1::

    Run, Loading.ahk  ;로딩창 스크립트를 실행합니다.

    ;~Script~

    Sleep, 3000  ;본문을 실행합니다. 임시로 Sleep을 넣었어요.

    Winclose, Loading.ahk  ;로딩창 스크립트를 닫습니다.

    MsgBox, 로딩완료

    Return

     

    로딩창을 별도의 스크립트로 만듭니다. 본문에서는 로딩창을 열거나 닫기만 하기 때문에 본문과의 간섭이 일절 없습니다. 따라서 로딩창의 속도를 조절해도 본문에는 영향을 주지 않아요. 다만 로딩파일이 별도로 존재한다는점이 단점이지요.

     

     

     

     

     

     

    Posted by 옹봉이