Q&A

  • [질문]폼의 이동을 감지하는 방법은 WM_EXITSIZEMOVE 만 있나요 ?
WM_EXITSIZEMOVE 은 폼이 크기 조절이 끝났을 때와 폼이 이동을 끝냈을때 이벤트가 발생하는군요.
단지 이동이 끝났을 때를 구분해서 찾아 내려면 어떻게 하면 되는지 도움 부탁드립니다.
2  COMMENTS
  • Profile
    장성호 2008.11.25 10:31

    WM_ENTERSIZEMOVE 와 WM_EXITSIZEMOVE 메세지는 마우스로 드래그 시작하고 종료하는 시점에 메세지가 발생하는군요


    WM_ENTERSIZEMOVE : 마우스의 드래그가 시작되는 시점에서 호출된다.
    WM_EXITSIZEMOVE : 마우스의 드래그가 끝나는 시점..클릭이 업이되는 시점에서 호출된다.


    Spy++로 메세지를 확인해 보니

    Size조절할때랑 move할때랑 메세지는 똑같이 발생하고,
    별도로 다른 메세지는 발생하지 않는군요


    WM_EXITSIZEMOVE 에 구분하려면?

    방법1.
    WM_ENTERSIZEMOVE 와 WM_EXITSIZEMOVE 메세지 사이에 발생하는 메세지중에서

    크기조절을 할경우 WM_SIZE 와 WM_SIZING 메세지가 발생하고
    위치이동의 경우 WM_MOVE 와 WM_MOVING 메세지가 발생합니다.

    중간에 발생하는 메세지를 확인해해서 구분할수 있을것 같습니다.


    방법2. 확실한 방법은 아니지만
    WM_ENTERSIZEMOVE 때 window의 크기와 위치를 확인해뒀다가
    WM_EXITSIZEMOVE 메세지에 크기와 위치를 비교해서 확인할수도 있을것 같습니다.

    그럼..





  • Profile
    이은주 2008.11.25 17:08
    그렇군요.
    역시...
    편법이긴 하지만 나쁜 대안은 아닌 것 같습니다.
    여러모로 늘 신세를 지고 있습니다.
    깊이 감사드립니다.