2021. 9. 27. 13:14 자기개발/MFC
C++(MFC) - SetCapture() GetCapture() ReleaseCapture()
SetCapture() GetCapture() ReleaseCapture() 메소드들은 마우스 이벤트를 헨들링 하기 위해 사용한다.
마우스가 영역 밖으로 이동했을 때 WM_MOUSEMOVE를 받고 싶을 때 사용한다.
SetCapture() 사용예
void C_ReviewWnd::OnRButtonDown(UINT nFlags, CPoint point)
{
// TODO: 여기에 메시지 처리기 코드를 추가 및/또는 기본값을 호출합니다.
//<<- 마우스 캡처
// : 마우스가 window 영역을 벗어나도 이벤트가 작동되게 하기 위함
SetCapture();
//r버튼시 현재 위치 저장
m_Rmove = point;
//r버튼클릭 활성화
m_Rflag = true;
CStatic::OnRButtonDown(nFlags, point);
}
GetCapture(), ReleaseCapture() 사용 예
void C_ReviewWnd::OnRButtonUp(UINT nFlags, CPoint point)
{
// TODO: 여기에 메시지 처리기 코드를 추가 및/또는 기본값을 호출합니다.
//<<- 마우스 캡처가 자기자신이 아니면 return처리
if (GetCapture() != this) return;
//드래그시 움직인 거리 저장
m_moveDistance += m_moveDrag;
//드래그로 움직인 거리 초기화
m_moveDrag = 0;
//r버튼 클릭 비활성화
m_Rflag = false;
ReleaseCapture ();
CStatic::OnRButtonUp(nFlags, point);
}
ReleaseCapture() 사용 안하면 WM_MOUSEMOVE가 계속 활성화 하면서 호출한다.
'자기개발 > MFC' 카테고리의 다른 글
c++(MFC) - 레지스트리(Registry) 저장, 불러오기 (0) | 2022.11.10 |
---|---|
C++(MFC) - 이미지 회전(90,180,270), 상하좌우,색반전 (0) | 2021.09.27 |