SetWindowEXt()와 SetViewportExt()는 원점을 설정하는 함수가 아닙니다.
논리적인 좌표를 물리적인 좌표로 출력 할 때 어떻게 출력 할 것 인지 비율을 지정하는
함수입니다.
SetViewportExt()는 물리적인 범위를 지정하는 함수로 pDC->SetViewportExt(rect.Width(),rect.Height()); 하면
클라이언트 영역의 폭과 높이로 범위를 지정하고,
SetWindowEXt()는 논리적인 범위를 지정하는 함수로 pDC->SetWindowExt(160,100); 하면
폭은 160이고 높이가 100인 논리적인 폭과 높이를 지정합니다.
그렇게 하면 논리적인값 의 범위가 폭은 0부터 160까지의 값을 지정하면 그 값이 물리적인 영역인
클라이언트 영역의 0부터 rect.Width()까지의 값으로 비율이 적용되어 맵핑됩니다.

논리적인 값이라는건 POINT ar[]={25,10,125,10,140,30,10,30,25,10}; 이 값을 말하는겁니다. 이 좌표값이 클라이언트 영역으로 맵핑 시키기 위해서
논리적인 범위를 pDC->SetWindowExt(160,100); 함수에서 160만큼의 폭과
100만큼의 높이를 지정한 것 입니다. POINT ar[]={25,10,125,10,140,30,10,30,25,10};에서
가장큰 X값은 140이고 Y값은 30이므로 (160,100)범위 안에서 움직이게 됩니다.

CDC의 멤버 함수들은 거의 대부분(90%이상) 논리적인 값을 파라메터로 받아들입니다.
pDC->Rectangle(30,40,60,70); pDC->Rectangle(90,40,120,70); pDC->Ellipse(135,5,155,25); 이 함수들의 좌표값은 모두 논리적인 값입니다.
기본 맵핑모드가 MM_TEXT이므로 이 값이 물리적인 픽셀값과 1:1로 맵핑되기 때문에
픽셀값으로 알고 있는것 뿐입니다.

참고로 원점을 변경하는 함수는 SetWindowOrg(), SetViewportOrg()함수 입니다.

'WindowsPrograming' 카테고리의 다른 글

DC (Device Context)  (0) 2007.04.05
SetWindowEXt() SetViewportExt()는  (2) 2007.04.04
MFC Consol 간단한 계산. @_@;;;; 너무 쉬운거.  (0) 2007.03.28
[퍼옴]MFC03  (0) 2007.03.11
Posted by Real_G