SetMapMode

원형 int SetMapMode(HDC hdc, int fnMapMode);
인수

▶hdc : 맵핑 모드를 설정할 대상 DC

▶fnMapMode : 설정할 맵핑모드이며 다음 중 하나를 지정한다.

맵핑모드 단위 X축 증가 Y축 증가
MM_TEXT 픽셀 오른쪽 아래쪽
MM_LOMETRIC 0.1mm 오른쪽 위쪽
MM_HIMETRIC 0.01mm 오른쪽 위쪽
MM_LOENGLISH 0.01인치 오른쪽 위쪽
MM_HIENGLISH 0.001인치 오른쪽 위쪽
MM_TWIPS 1/1440인치 오른쪽 위쪽
MM_ISOTROPIC 가변 가변 가변
MM_ANISOTROPIC 가변 가변 가변
리턴 성공하면 이전에 설정되어 있던 맵핑 모드가 리턴되며 에러 발생시 0을 리턴한다.
설명

윈도우즈에서 사용되는 좌표는 논리 좌표와 물리 좌표 두가지가 있다.

■ 논리 좌표 : 윈도우즈 내부에서 사용되는 좌표를 말한다. TextOut (100,100,...)에서 지정한 (100,100)이 곧 논리 좌표이며 논리 좌표의 실제 위치는 경우에 따라 달라진다. 그래픽 함수들이 사용하는 모든 좌표는 논리 좌표이며 좀 더 현실적으로 얘기한다면 DC핸들을 인수로 받아들이는 모든 함수는 논리 좌표를 사용한다.

■ 물리 좌표 : 실제 화면에 출력되는 좌표이며 픽셀 단위를 사용한다. 모니터의 물리적인 픽셀 단위를 사용하므로 물리 좌표 (100,100)은 그 위치가 정해져 있다. 윈도우를 관리하는 함수(또는 메시지) 에서 사용하는 좌표는 물리 좌표이다.

맵핑 모드란 주어진 논리 좌표가 화면상의 어디에 해당하는지를 결정하는 변환 방법을 의미한다. 즉 논리 좌표와 물리 좌표의 관계를 정의한다. 디폴트 맵핑 모드는 논리 좌표와 물리 좌표가 일치되어 있는 MM_TEXT이므로 어떠한 좌표 변환도 일어나지 않지만 맵핑 모드를 변경하면 논리 좌표의 실제 화면 위치에 변화를 줄 수 있다.

예제 1

다음 예제는 맵핑 모드를 MM_LOENGLISH로 변경한 후 타원형을 그렸다. 이때 사용되는 단위는 0.01인치 단위이므로 사각형의 폭과 높이는 각각 3인치, 2인치가 되며 Y축 증가방형이 위쪽이므로 원점 아래쪽에 타원을 그리려면 Y좌표에 음수값을 주어야 한다.

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

	switch(iMessage) {
	case WM_PAINT:
		hdc=BeginPaint(hWnd, &ps);
		SetMapMode(hdc,MM_LOENGLISH);
		Ellipse(hdc,10,-10,310,-210);
		EndPaint(hWnd, &ps);
		return 0;
	case WM_DESTROY:
		PostQuitMessage(0);
		return 0;
	}
	return(DefWindowProc(hWnd,iMessage,wParam,lParam));
}

이 예제에서 맵핑 모드를 MM_HIENGLISH나 MM_LOMETRIC 등의 다른 값으로 변경하면 타원의 크기가 변경된다.

참고함수 GetMapMode : 현재 설정되어 있는 맵핑 모드를 조사한다.
플렛폼95이상
본문참조 

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