【发布时间】:2015-02-23 06:03:53
【问题描述】:
我正在尝试在 VC++ 中制作一个 MFC SDI 应用程序,以便在单击相应按钮时绘制不同的形状。我们已经在 OnDraw() 函数中编写了代码。但是 Ondraw 会在运行应用程序时自动调用。我们希望它只在相应按钮的 onclick 上被调用。我们如何进行..?
【问题讨论】:
标签: visual-c++ mfc
我正在尝试在 VC++ 中制作一个 MFC SDI 应用程序,以便在单击相应按钮时绘制不同的形状。我们已经在 OnDraw() 函数中编写了代码。但是 Ondraw 会在运行应用程序时自动调用。我们希望它只在相应按钮的 onclick 上被调用。我们如何进行..?
【问题讨论】:
标签: visual-c++ mfc
您不能阻止仅在您按下按钮时调用 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 每次被框架调用时进行绘制。这就是窗口图像在被覆盖、最小化、调整大小等之后恢复的方式。
【讨论】: