2011-12-19 33 views
1

我嘗試使用以下指令在一個mfc窗口上繪製一個矩形:http://msdn.microsoft.com/en-US/library/8w4fzfxf%28v=VS.80%29.aspx。儘管我嘗試過,但矩形出現在覆蓋整個窗口的窗口邊界上。下面的代碼在函數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 = vs80).aspx)?看起來這個調用覆蓋了你以前在'myRect'中設置的座標。 – stakx 2011-12-19 10:38:41

+0

你一定是對的,但是在說明書中提到了它。 – arjacsoh 2011-12-19 10:42:13

+1

您尚未完全複製說明。您剛剛以隨機順序複製和粘貼部件。它檢索客戶矩形,然後在每個方向上縮小20個像素,然後繪製該*矩形。 – 2011-12-19 10:49:33

回答

2

撥打電話GetClientRect

該函數將寫入傳遞給它的矩形對象,因此通過調用覆蓋在調用前使用ptsz設置的特定座標。

1

由於@stakx建議您應該刪除GetClientRect,它獲取整個窗口客戶區,並覆蓋您自己的矩形。

對於指令,它首先獲取整個客戶區,並縮小矩形以獲得矩形繪製,因此需要GetClientRect