我尝试使用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);
答案 0 :(得分:2)
将通话转至GetClientRect
。
该函数将写入传递给它的矩形对象,因此通过调用,您将使用pt
和sz
覆盖您在调用之前设置的特定坐标。
答案 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()。它将覆盖您之前的坐标。