ClientToScreen

원형

BOOL ClientToScreen(HWND hWnd, LPPOINT lpPoint);

MFC 원형

void CWnd::ClientToScreen( LPPOINT lpPoint ) const;

인수

▶hWnd : 좌표 변환에 사용될 윈도우의 핸들. lpPoint를 이 윈도우의 작업 영역 좌표로 인식한다.

▶lpPoint : 변환 대상 좌표이며 논리 단위가 아닌 장치 단위(픽셀)이다.

리턴

성공하면 0이 아닌 값을 리턴하며 실패하면 0을 리턴한다.

설명

hWnd의 작업 영역 원점을 기준으로 하는 좌표 lpPoint를 전체 화면을 기준으로 하는 좌표로 변환한다. hWnd윈도우의 작업 영역 원점의 화면 좌표가 cx, cy일 때 lpPoint는 lpPoint.x + cx, lpPoint + cy로 변환된다. 작업 영역의 좌표를 받아 GetCurosrPos, MoveWindow 등과 같이 화면 좌표를 요구하는 함수로 좌표를 전달하기 위해 이 함수를 사용한다.

예제 1

다음 예제는 마우스 왼쪽 버튼을 누를 때 마우스 커서를 강제로 (200,200)으로 옮긴다.

LRESULT CALLBACK WndProc(HWND hWnd,UINT iMessage,WPARAM wParam,LPARAM lParam)
{
	HDC hdc;
	PAINTSTRUCT ps;
	POINT pt;

	switch(iMessage) {
	case WM_LBUTTONDOWN:
		pt.x=200;
		pt.y=200;
		ClientToScreen(hWnd,&pt);
		SetCursorPos(pt.x,pt.y);
		return 0;
	case WM_PAINT:
		hdc=BeginPaint(hWnd, &ps);
		Rectangle(hdc,200-5,200-5,200+5,200+5);
		EndPaint(hWnd, &ps);
		return 0;
	case WM_DESTROY:
		PostQuitMessage(0);
		return 0;
	}
	return(DefWindowProc(hWnd,iMessage,wParam,lParam));
}

마우스 커서의 위치를 옮길 때는 SetCursorPos 함수를 사용하는데 이 함수는 화면 원점을 기준으로 하는 좌표를 요구하므로 ClientToScreen 함수로 작업 영역 좌표를 화면 좌표로 변환한 후 SetCurosrPos 함수를 호출해야 한다. 그렇지 않으면 마우스 커서는 무조건 화면상의 (200,200)으로 이동한다.

참고함수

ScreenToClient : 화면 좌표를 작업 영역 좌표로 변환한다.

플랫폼

95이상

참조

 


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