在MFC SDI应用程序中调用OnDraw

时间:2015-02-23 06:03:53

标签: visual-c++ mfc

我正在尝试在VC ++中制作MFC SDI应用程序,以便在单击相应按钮时绘制不同的形状。我们在OnDraw()函数中编写了代码。但是Ondraw会自动调用运行应用程序。我们希望只在相应按钮的onclick上调用它。我们如何进行..?

3 个答案:

答案 0 :(得分:0)

您无法阻止仅在按下按钮时调用OnDraw。

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

当您的应用程序最小化并再次最大化时,或者当窗口大小发生变化时,也会调用OnDraw。

此外,我无法想到一个场景,我只想在按下按钮时进行绘图。你需要更精确。这里。

答案 1 :(得分:0)

正如xMRi所说,OnDraw由框架调用...但是如果你只想在点击按钮时绘制内容,为什么不创建成员变量,单击按钮时进行设置,并在执行OnDraw时获得计数?

void CYourAppView::OnDraw(CDC* pDC)
{
    // MFC code
    if(m_bButtonWasClicked)
    {
        // draw what ever you want
    }
}

答案 2 :(得分:0)

  1. 单击形状按钮时,设置一个成员变量,记住您要绘制的内容。
  2. 致电无效。这将导致框架调用OnDraw。
  3. 在OnDraw中检查成员变量并绘制形状。
  4. 每次框架调用时,都必须允许OnDraw绘制。这就是窗口图像在被揭开,未被最小化,调整大小等后恢复的方式。