VC++ MFC问题

来源:百度知道 编辑:UC知道 时间:2024/05/06 06:20:48
void CMy121View::OnLButtonDown(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
CClientDC dc(this);

if(n==0)
{
dc.Rectangle(100,100,400,400);
n=1;
}
else
{

dc.Ellipse(100,100,400,400);
n=0;
}

CView::OnLButtonDown(nFlags, point);
}

如何实现在第二次左击时,矩形消失,出现圆形,再左击圆形消失,出现矩形

你的n是在类的头文件中定义的吗?如果是,这就可以了。如果不是,请在头文件中定义为类的成员变量。我想你的意思大概是要每次单击把前一次画的图形清除掉,那么在每次调用dc作图前(dc.Ellipse(100,100,400,400); dc.Rectangle(100,100,400,400); )
加上语句RedrawWindow();应该就可以了。

你写这段意思上就可以嘛;
把n定义成static的,在0和1之间切换
画之前都清除下以前画的

添加一个 CMy121View 的成员变量 BOOL m_bRectangle (相当于你代码里的n) ,在 OnLButtonDown 中改变 m_bRectangle 的值;在 OnPaint 中根据 m_bRectangele 的值绘制矩形或圆。

楼上说的静态变量也勉强能看到效果,但是一旦窗口刷新就什么都没有了。并且从设计上讲,m_bRectangle 应该属于类对象(作为类的成员变量),而不是类函数(作为类函数静态变量)。

定义n为整型全局变量就可以了