2011-12-19 5 views
1

http://msdn.microsoft.com/en-US/library/8w4fzfxf%28v=VS.80%29.aspx의 지침에 따라 mfc 창에 직사각형을 그려 봅니다. 많은 노력했지만, Rectangle은 창 테두리에 전체를 덮습니다. OnDraw (CDC * pDC) 함수에 다음 코드의 문제점은 무엇입니까? 창에 특정 좌표가있는 사각형을 그릴 수 있습니까?MFC의 사각형

CPen penBlack; 
penBlack.CreatePen(PS_SOLID, 3, RGB(0, 0, 0)); 
CPen* pOldPen = pDC->SelectObject(&penBlack); 

CPoint pt(10, 10); 
CSize sz(100, 50); 
CRect myRect(pt, sz); 
GetClientRect(&myRect); 

pDC->Rectangle(&myRect); 
+4

['GetClientRect'] (http://msdn.microsoft.com/en-us/library/hkzy4k3x(v=80) .aspx)를 왜 호출합니까? 이 호출은 이전에 설정 한 좌표를 'myRect'에 덮어 쓴 것처럼 보일 것입니다. – stakx

+0

당신 말이 맞아야하지만 지침에 제안되어 있습니다. – arjacsoh

+1

지침을 정확하게 복사하지 않았습니다. 부품을 임의 순서로 복사하여 붙여 넣었습니다. 클라이언트 사각형을 검색 한 다음 각 방향으로 20 픽셀 씩 축소 한 다음 * 해당 * 사각형을 그립니다. –

답변

2

GetClientRect으로 전화를 겁니다.

이 함수는 전달 된 사각형 객체에 쓰기 때문에 ptsz을 사용하여 호출하기 전에 설정 한 특정 좌표를 덮어 쓰게됩니다.

0

이 사이트는 mfc Dialog 기반 응용 프로그램에서 사각형을 그리는 데 도움이됩니다.

http://cboard.cprogramming.com/cplusplus-programming/102490-cplusplus-mfc-rectangle-class.html

http://cboard.cprogramming.com/windows-programming/37788-drawing-mfc.html

는 GetClientRect()를 사용하지 마십시오. 그것은 당신의 이전 좌표를 우선합니다.

+0

이것은 전혀 도움이되지 않습니다. 답변은 실제로 질문에 답하기로되어 있으며, 일반 주제에 임의의 링크를 제공하지 않습니다. –

1

@stakx는 전체 창 클라이언트 영역을 가져오고 자신의 사각형을 덮어 쓰는 GetClientRect을 제거해야한다고 제안했습니다.

명령에 대해서는 먼저 클라이언트 영역 전체를 가져오고 그 사각형을 축소하여 그릴 직사각형을 가져 오므로 GetClientRect이 필요합니다.