|
마우스 이벤트를 여러군데 묶을 필요 없습니다.
OnExit이벤트를 이용하면 간단하게 해결됩니다.
일반적으로 버튼위에서 마우스를 누르면 OnMouseDown이벤트 발생하고
마우스를 때면 OnMouseUp이벤트가 발생합니다.
그러나 마우스를 누른후 해당버튼을 벗어나서 땔 경우 OnMouseUp이벤트는 발생하지 않습니다.
이때는 OnExit이벤트가 발생하게 됩니다.
마우스가 해당버튼을 벗어낫다고해서 바로 OnExit이벤트가 발생하는 것이 아니라
마우스에서 손을 땐 순간 발생합니다.
그렇기때문에이것을 이용하면 어디에서든 OnMouseUp이벤트를 대치할 수 있다는 것입니다.
한가지 고려해야 할 것은 OnExit이벤트 발생시 해당 버튼의 OnMouseDown가 발생했을때만
적용해야 한다는 것입니다.
[적용예]
bool mousedown = false;
//----------------------------
Button1MouseDown이벤트
{
mousedown = true;
//마우스 다운시 처리
}
//----------------------------
Button1MouseUp이벤트
{
mousedown = false;
//마우스 업시 처리
}
//----------------------------
Button1Exit이벤트
{
if(mousedown)
{
mousedown = false;
//마우스 업시 처리
}
}
이렇게 하시면 끝납니다.
다른 콤포넌트에서 처리한 OnMouseUp이벤트는 없애세요.
도움이 되셨는지요?
즐거운 하루되십시오.
-----------------------------------------
작은 생각이 세상을 바꾼다 - 정성훈.해미 -
-----------------------------------------
케군 님이 쓰신 글 :
: 제가 초보라서 잘 모르겠지만 아는데로 적어볼께요.
:
: 제가 마우스 클릭을 해서 마우스 클릭이 끝날때까지만 상태를 유지 시키는 프로그램을 짜는데...
: OnMouseDown함수에서 시작해서 OnMouseUp함수에서 끝나게 했습니다.
:
: 폼 위에 어느곳에서 클릭이 끝나더라도 실행되게 하기 위해서 여러 컴포넌트들을
: 하나의 OnMouseUp함수로 묶어서 처리했습니다. 폼의 OnMouseUp함수도 마찬가지로...
:
: 그런데 만약 마우스 클릭 상태에서 외부의 다른 폼이나 클라이언트외의 영역으로 옮겨서
: 클릭이 끝나게되면 끝이 안나고 계속 클릭된 상태처럼 인식합니다.
:
: 외부의 다른 폼이나 클라이언트외 영역에서 클릭이 끝났다는 사실을 알수 없을까요?
: 고수님들의 답변 부탁드립니다.
|