|
유영인님 답변 감사합니다.
일단 질문할 당시에는 정확한 증상 파악이 안되었었는데...
예를 들어 TImage 위에 TShape를 하나 올려놓습니다.
TImage 위의 TShape 밖 한 점에서 마우스를 클릭해서 드래그 한 다음 TShape 내에서 마우스 버튼을 때는 상황을 생각해보겠습니다.
일단 마우스를 클릭했을 때 MouseDown 이벤트를 받아서 시작점을 기록합니다.
마우스가 TImage 위에서 움직일 때 MouseMove 이벤트를 받고 마우스 버튼이 눌러져있을 경우에만 이벤트를 처리하도록 합니다.
그 다음 마우스 버튼을 뗐을 때 MouseUp 이벤트를 받아 끝점을 기록합니다.
마우스로 선택 영역을 보여주기 위해 TShape를 따로 하나 더 만들어 마우스 포인터를 따라 크기가 변경되도록 하여 살펴보면..
마우스 왼쪽 버튼을 누르고 드래그할 경우 마우스가 TShape 위로 올라가도 MouseMove, MouseUp 이벤트가 발생합니다.
하지만 마우스 오른쪽 버튼을 누르고 드래그할 경우 마우스가 TShape 위로 올라가는 순간 MouseMove 이벤트는 더 이상 발생하지 않더군요.
더군다나 MouseUp 이벤트도 발생하지 않아 드래그와 관련된 동작이 정확히 이루어지지 않았습니다.
위 사항들은 각각의 이벤트 핸들러 첫 구문에 브레이크 포인트를 만들어서 확인했습니다.
유영인님 말씀처럼 MouseUp 이벤트는 MouseDown 이벤트가 발생된 객체에서 발생한 것 처럼 되더군요.
제 경우 상당히 유용하게 이용할 수 있었습니다.
왜 이 같은 일이 발생하는것인지 이해가 안되더군요.
오른쪽 버튼은 PopupMenu와 관련이 있으니 그럴 것 같다는 생각도 들긴 했는데...
어쩌면 윈도우 자체에서 그렇게 처리하는 것일지도 모르겠네요.
궁금한 것은 알고 넘어가야겠기에...
아시는 바가 있으면 도움말씀 부탁드리겠습니다.
|