유돌이

calendar

1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30

Notice

2009. 3. 21. 11:32 C/C++/MFC
출처 김규민의 침묵으로 쓰는 시(詩) | 정천사
원문 http://blog.naver.com/angelkkm80/20035746964

-마우스 클릭 메시지 (누름, 땜, 더블클릭 순서)
좌측 : WM_LBUTTONDOWN, WM_LBUTTONUP, WM_LBUTTONDBLCLK
우측 : WM_RBUTTONDOWN, WM_RBUTTONUP, WM_RBUTTONDBLCLK
중앙 : WM_MBUTTONDOWN, WM_MBUTTONUP, WM_MRBUTTONDBLCLK

wParam 값 : 마우스 버튼 상태와 키보드 조합키 상태가 전달
MK_CONTROL - CTRL 키가 눌려져 있다.
MK_LBUTTON - 마우스 왼쪽 버튼이 눌려져 있다.
MK_RBUTTON - 마우스 오른쪽 버튼이 눌려져 있다.
MK_MBUTTON - 마우스 가운데 버튼이 눌려져 있다.
MK_SHIFT - shift키가 눌려져 있다.
등등...
*자세한 내용은 인터넷검색이나 msdn, 혹은 .h파일을 참조


lParam 값 : 마우스 버튼이 눌러진 y,x 좌표 정보가 담겨있다.
왜 y,x 순서인가 하면 상위비트는y가, 하위비트에는 x이기 때문이다.
좌표검출(비트분해)을 위해 HIWORD(lParam), LOWORD(lParam)의 매크로 함수를 이용한다.
             ┌────┬────┐
lParam = │         Y │ X         │
             └────┴────┘

-WM_MOUSEMOVE : 마우스가 이동할때 마다 발생하는 메세지

wParam 값:조합키상태

lParam 값:마우스커셔의 위치

 

-WM_MOUSEWHEEL : 마우스 휠을 이용할때 발생하는 메세지
#include <zmouse.h>와 같이 이용(2000이하 사용자)

wParam 값:
HIWORD(wParam) : 휠을 굴렸을때 120, -120 값으로 위,아래를 결정한다.
LOWORD(wParam) : 휠과 같이 사용할 조합키를 나타낸다.(마우스클릭조합과 같음)

lParam 값:마우스커셔의 위치

이런방법도 있다.(메크로함수)
fwKeys = GET_KEYSTATE_WPARAM(wParam);
zDelta = GET_WHEEL_DELTA_WPARAM(wParam);
xPos = GET_X_LPARAM(lParam);
yPos = GET_Y_LPARAM(lParam);


-더블클릭
더블클릭 메세지를 사용하기위해서는 윈도우클래스 등록에서 style에 CS_DBLCLKS 을
추가 해야만 한다.
예)WndClass.style = CS_HREDRAW | CS_VREDRAW | CS_DBLCLKS;

이렇게 된 이유는 더블클릭이 생각보다 많은 딜레이를 발생하기 때문에 꼭 필요할
경우 계발자가 추가하도록 하기 위해서 이다.

 

-비 작업 영역에서의 마우스 메세지
-WM_NC******** 등으로 표현된다.(NC는 None Client 같다.)자세한 내용은 다음에..

 

 

주의 - wParam 과 lParam값은 메세지마다 틀리다.

 


posted by 유돌이