Visual c++ 在MFCSDI应用程序中调用OnDraw

Visual c++ 在MFCSDI应用程序中调用OnDraw,visual-c++,mfc,Visual C++,Mfc,我试图在VC++中制作一个MFCSDI应用程序,在单击相应的按钮时绘制不同的形状。我们已经在OnDraw()函数中编写了代码。但Ondraw在运行应用程序时会自动被调用。我们希望只在单击相应的按钮时调用它。我们如何继续 您无法阻止只有在按下按钮时才会调用OnDraw 当WM_PAINT到达并要求窗口重新绘制自身时,将调用视图中的OnDraw。不执行OnDraw将导致根本不绘制任何内容 当应用程序再次最小化和最大化时,或者当窗口大小改变时,也会调用OnDraw 我也不能想象一个场景,我只想在按下按

我试图在VC++中制作一个MFCSDI应用程序,在单击相应的按钮时绘制不同的形状。我们已经在OnDraw()函数中编写了代码。但Ondraw在运行应用程序时会自动被调用。我们希望只在单击相应的按钮时调用它。我们如何继续

您无法阻止只有在按下按钮时才会调用OnDraw

当WM_PAINT到达并要求窗口重新绘制自身时,将调用视图中的OnDraw。不执行OnDraw将导致根本不绘制任何内容

当应用程序再次最小化和最大化时,或者当窗口大小改变时,也会调用OnDraw


我也不能想象一个场景,我只想在按下按钮时画画。你需要更加精确。这里。

正如xMRi所说,OnDraw由框架调用。。。但是,如果您只想在单击按钮时绘制某些内容,为什么不创建一个成员变量,在单击按钮时进行设置,并在执行OnDraw时获取计数

void CYourAppView::OnDraw(CDC* pDC)
{
    // MFC code
    if(m_bButtonWasClicked)
    {
        // draw what ever you want
    }
}
  • 单击形状按钮时,设置成员变量,以记住要绘制的内容
  • 调用无效。这将导致框架调用OnDraw
  • 在OnDraw中,检查成员变量并绘制形状

  • 每次框架调用OnDraw时,必须允许它进行绘制。这就是在打开、取消动画化、调整大小等之后恢复窗口图像的方式。

    我想根据鼠标单击显示不同的形状。例如,如果用户单击正方形,则应绘制正方形。所以要绘制的代码是用onDraw编写的。那么,如何在单击时只绘制特定的形状呢?你应该在绘制和创建之间做出区别。在视图中创建一个形状。然后你必须画出来。在doneon OnDraw绘制。创建通常在命令处理程序中完成。