NGMsoftware

NGMsoftware
로그인 회원가입
  • 매뉴얼
  • 팁 앤 테크
  • 매뉴얼

    팁과 테크니컬 노하우를 확인하세요.

    팁 앤 테크

    팁과 테크니컬 노하우를 확인하세요.

    본 사이트의 컨텐츠는 저작권법의 보호를 받으므로 무단 복사, 게재, 배포 등을 금합니다.

    에디터 비활성 다클라 매크로를 만들 때 마우스 동작에 대한 이해.

    페이지 정보

    본문

    안녕하세요. 엔지엠소프트웨어입니다. 비활성으로 마우스 클릭 동작 방식에 대한 문의가 많아서 이해하기 쉽게 정리해야 할 필요가 있을듯 합니다. 이 내용을 이해하시면 비활성 매크로를 만드는데 많은 도움이 될거예요. 여유를 가지고, 천천히 읽어보시기를 권합니다^^ 우선, 그림판을 실행하고 시각적으로 잘 보이게 셋팅을 해주세요.

    ※ 필독 - [ 비활성 다클라 매크로를 만들 때 주의사항 ]

    fmAWVav.png

     

     

    에디터에서 스크립트를 추가하고, [ 핸들 추가 ] 액션과 [ 마우스 클릭 ] 액션을 추가하세요. 그리고, 아래 동영상과 같이 핸들을 추가 해줍니다.

    CGvnErb.gif

     

     

    자 이제 좀 어려운 내용인데요. 비활성 매크로를 만드는 장점은 창이 겹치거나 다른 창 뒤로 숨더라도 이미지 조건을 처리하고 마우스 위치를 항상 동일하게 처리해준다는 점입니다. 창의 위치가 변경되더라도 엔지엠 내부에서 처음에 설정한 좌표에서 창이 이동한만큼 위치를 계산해서 처리 해줍니다. 이런 여러가지 장점이 존재하지만 몇가지 주의해서 스크립트를 작성해야 합니다. 일단, 아래와 같이 옵션에서 마우스 이펙트를 키고 저장하세요.

    wwJymMp.png

     

     

    이제 그림판에 클릭할 위치를 설정하고 실행 해보세요. 마우스는 그대로 있지만, 그림판에 클릭이 되는걸 확인할 수 있습니다. 물론, 그림판을 이동해도 정상 동작합니다.

    nzct44n.gif

     

     

    이렇게 동작할 수 있는 이유는 아래와 같이 계산되기 때문입니다. 먼저 마우스 좌표를 설정할 때 창의 위치 값을 계산하기 위한 ①정보를 내부에 저장합니다. 이 값은 최소 설정시 한번만 저장됩니다. 창의 위치와 마우스 클릭 좌표를 계산해서 최종 위치가 결정됩니다. 이 때 창을 이동하면 핸들로 현재 창의 위치를 가져와서 처음에 저장한 창의 위치 값과 더해줍니다. 그러면 마우스 좌표는 동일하더라도 마우스 위치를 다시 계산할 수 있게됩니다. 아래와 같이 계산됩니다.

    (마우스 좌표 + 창 위치) - 실행시 창 위치 = 마우스 최종 위치

    n6mguq0.png

     

     

    비활성 매크로는 창의 핸들 값을 가지고 있기 때문에 창의 위치를 추적할 수 있습니다. 이렇게 계산되기 때문에 하나의 스크립트에서 창의 위치가 계속 변경되면 계산 로직에 문제가 발생합니다. 스크립트를 작성할 때는 대상 창을 항상 좌측 상단(0, 0) 위치로 고정시켜놓고 끝까지 작업하는게 좋습니다. 그래야 창의 최초 위치와 마우스 좌표를 현재 위치와 계산해서 처리할 수 있습니다. 이는 사람이 인지하는 부분에서 쉽다는 뜻입니다. 제어하는 창의 기본 위치값이 계속해서 변화하면 마우스 좌표도 사람이 계산하기가 쉽지 않기 때문입니다. 특정 구간에서 창의 위치가 이리저리 이동한다면 에러 상황에서 문제점을 찾기도 어려워집니다.

     

    자~ 그렇다면, 마우스 클릭이나 기타 동작들을 엔지엠 에디터의 마우스 트레킹 기능을 사용하지 않는다면 어떻게 될까요? 아래처럼 복사해서 사용한다면요. 아래 동영상처럼 여전히 정상 동작할겁니다. 마우스 업에는 최초 창의 위치값이 없다는걸 확인해야 합니다. 그렇다면 처음 설정한 마우스 좌표에서 창이 이동한 후 실제 클릭할 위치를 어떻게 알 수 있을까요? 아쉽지만~ 이런 경우에는 창이 이동한 위치만큼 좌표를 보정할 수 없습니다.

    f6FEEc8.gif

     

     

    위에서 설명했듯이 창을 이동하면 위치가 보정되지 못하는 것을 확인할 수 있습니다. 마우스 다운 액션은 정확하게 위치를 계산해서 처리되었지만, 마우스 좌표만 복사한 마우스 업 액션은 계산이 안된걸 확인할 수 있습니다. 물론, 마우스 다운의 매인 윈도우 정보와 컨트롤 윈도우 정보를 변수를 통해 업에 복사해주면 정상 동작합니다.

    RWtwioy.gif

     

     

    개념이 다소 어려울 수 있는데요. 쉽게 설명하면 현재 위치에서 이동한 위치만큼 더하거나 빼서 좌표값을 만들어준다고 생각하시면 됩니다. 실제로도 이렇게 동작하고 있기도 하죠~ 다만, 엔지엠은 비활성뿐만 아니라 활성, 하드웨어 모드를 위해 좀 더 복잡하게 로직이 구성되어 있습니다. 그리고, 마우스 이펙트를 만들어주기 위한 윈도우 절대좌표로 변환하기 위한 로직도 존재하죠^^; 자~ 그렇다면 이미지 조건들은 어떻게 될까요? 마우스 액션과 다르게 매인 윈도우 정보와 컨트롤 윈도우 정보를 이미지가 가지고 있게 됩니다. 우리가 만드는 ngi 이미지는 png 이미지뿐만 아니라 내부에 윈도우 정보도 함께 저장하고 있습니다. 이외에도 빠른 동작을 위해 이미지 정보를 분해해서 dpi나 크기도 가지고 있습니다.

     

    비활성 매크로를 만드는 가장 좋은 시나리오는 다음과 같습니다.

    1. 제어할 창을 0, 0 위치로 이동
    2. 하나의 완성된 스크립트 제작
    3. 스크립트를 복사하여 서브 스크립트 생성
    4. 서브 스크립트의 핸들 추가 액션에서 동일한 프로그램의 다른 창 핸들 설정

     

    개발자에게 후원하기

    MGtdv7r.png

     

    추천, 구독, 홍보 꼭~ 부탁드립니다.

    여러분의 후원이 빠른 귀농을 가능하게 해줍니다~ 답답한 도시를 벗어나 귀농하고 싶은 개발자~

    감사합니다~

     

    • 네이버 공유하기
    • 페이스북 공유하기
    • 트위터 공유하기
    • 카카오스토리 공유하기
    추천1 비추천0

    댓글목록

    등록된 댓글이 없습니다.