MFC中的矩形

时间:2011-12-19 10:36:28

标签: c++ mfc

我尝试使用http://msdn.microsoft.com/en-US/library/8w4fzfxf%28v=VS.80%29.aspx的说明在mfc窗口上绘制一个矩形。虽然我尝试了很多,但矩形出现在窗口的边框上,覆盖了整个窗口。函数OnDraw(CDC * pDC)中的以下代码有什么问题?如何在窗口中绘制具有特定坐标的Rectangle?

 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);  

3 个答案:

答案 0 :(得分:2)

将通话转至GetClientRect

该函数将写入传递给它的矩形对象,因此通过调用,您将使用ptsz覆盖您在调用之前设置的特定坐标。

答案 1 :(得分:1)

正如@stakx建议您删除GetClientRect,它会获取整个窗口客户区,并覆盖您自己的矩形。

对于指令,它首先获取整个客户区域,并缩小矩形以获取要绘制的矩形,因此需要GetClientRect

答案 2 :(得分:0)

此站点将帮助您在基于对话框的mfc应用程序中绘制矩形。

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

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

不要使用GetClientRect()。它将覆盖您之前的坐标。