WM_LBUTTONDOWN

인수

wParam : 키보드와 다른 마우스 버튼의 현재 상태를 나타내는 값이며 다음 플레그들의 조합값이다.

설명
MK_CONTROL Ctrl 키가 눌러져 있다.
MK_LBUTTON 마우스 왼쪽 버튼이 눌러져 있다.
MK_MBUTTON 마우스 가운데 버튼이 눌러져 있다.
MK_RBUTTON 마우스 오른쪽 버튼이 눌러져 있다.
MK_SHIFT Shift키가 눌러져 있다.

LOWORD(lParam), HIWORD(lParam) : 마우스의 현재 X, Y좌표이다. 이 좌표는 작업 영역의 원점을 기준으로 한 좌표이다.

설명

작업 영역 내부에서 마우스 왼쪽 버튼을 누를 때 이 메시지가 메시지 큐에 붙여진다. 마우스가 캡처되어 있으면 캡처한 윈도우로 메시지가 전달되며 그렇지 않으면 마우스 커서 아래의 윈도우로 전달된다. 모든 메시지 중에 가장 쉽게 받을 수 있는 메시지이므로 실습용이나 간단한 테스트용으로 많이 사용된다.

리턴

메시지를 처리했으면 0을 리턴한다.

예제

예제 1

다음 예제는 마우스로 클릭한 위치에 ^Click^문자열을 출력한다. Ctrl키와 함께 클릭하면 이 문자열을 삭제한다. 최후 출력 위치 저장을 위해 x,y변수를 static으로 선언했으며 WM_LBUTTONDOWN에서 이 좌표를 마우스를 누른 위치의 좌표로 변경하였다.

LRESULT CALLBACK WndProc(HWND hWnd,UINT iMessage,WPARAM wParam,LPARAM lParam)
{
	HDC hdc;
	PAINTSTRUCT ps;
	static int x,y;

	switch(iMessage) {
	case WM_LBUTTONDOWN:
		if (wParam & MK_CONTROL) {
			x=0;y=0;
		} else {
			x=LOWORD(lParam);
			y=HIWORD(lParam);
		}
		InvalidateRect(hWnd,NULL,TRUE);
	case WM_PAINT:
		hdc=BeginPaint(hWnd, &ps);
		if (x) {
			SetTextAlign(hdc,TA_CENTER);
			TextOut(hdc,x,y,"^Click^",7);
		}
		EndPaint(hWnd, &ps);
		return 0;
	case WM_DESTROY:
		PostQuitMessage(0);
		return 0;
	}
	return(DefWindowProc(hWnd,iMessage,wParam,lParam));
}

플랫폼

95이상

참조

 


written by http://www.winapi.co.kr