2011-12-19 88 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