WM_MOUSEMOVE 2

SetCapture 특기할만한 사항

SetCapture API의 경우 보통 마우스가 윈도우 영역을 벗어나더라도 계속 마우스 무브 메시지를 받을 필요가 있는 경우 사용한다. ReleaseCapture하면 설정된 캡쳐가 해제된다. 이건 윈도우 이동시의 윤곽선 변경 테스트해보다가 발견한 것인데 윈도우의 프레임이나 메뉴, 캡션 등 논클라이언트 영역에서 마우스 이동할 경우에도 SetCapture 함수를 사용하면 WM_MOUSEMOVE로 메시지가 온다. 참고로 논클라이언트 영역에서 마우스 이동시 원래는 WM_NCMOUSEMOVE가 발생한다. 따라서 일단 SetCapture를 사용하면 어떤 영역에 있든 WM_MOUSEMOVE가 오게되므로 위 메시지처리부에서 일괄적으로 코딩할 수 있어서 편하다.

API 2011.07.16

SetROP2 이용하여 반전효과 사용시 주의사항

SetROP2에서 R2_NOT이나 R2_XORPEN를 줘서 반전효과를 이용하면 이전의 선들을 지우면서 이동할 수 있다. 그런데 기존에 인터넷에 돌아다니는 소스에는 좀 문제가 있다. 마우스 왼쪽 버튼 다운 메시지가 오면 파라미터로 전달된 좌표와 old x, old y 좌표를 일치시켜서 처리하는 식인데 이 경우 마우스 무브 첫 메시지 발생하고 그리는 과정에서 문제가 생긴다. 선을 그리는 함수의 좌표가 같은 경우, 가령 (100, 100) ~ (100, 100) 까지 선을 그린다고 하면 100, 100 위치에 선 굵기만한 점이 그려진다. 그래서 첫 마우스무브 메시지에서 일단 선굵기 크기의 점을 그리고 그 다음에 시작지점부터 마우스무브 좌표까지의 선을 그린다. 이 결과 첫 점 부분이 다시 반전이 되어 원래의 배..

API 2011.07.12