关于网友提出的“ CFormView afxwin2inl中的Invalidate()问题”问题疑问,本网通过在网上对“ CFormView afxwin2inl中的Invalidate()问题”有关的相关答案进行了整理,供用户进行参考,详细问题解答如下:
问题: CFormView afxwin2inl中的Invalidate()问题
描述: 请大家帮帮忙,这个问题都困扰了我一周了。就是解决不了。很急,公司急着用
我的程序是工业上用的数控系统,窗体可以切换。我在其中一个窗体中运行程序。中间暂停,切换到另一个窗体,然后在回到先前的窗体中。我在第一个窗体中建了几个自定义的按钮控件。可是当我退出在回到原窗体继续运行程序时,会出现一个断言错误。错误代码为
_AFXWIN_INLINE void CWnd::Invalidate(BOOL bErase)
{ ASSERT(::IsWindow(m_hWnd)); ::InvalidateRect(m_hWnd, NULL, bErase); }
我跟踪了一下发现,这个时候与控件关联的成员变量值改变了,也就是按钮控件的m_hwnd变了,怎么回事啊。我看了看OnInitialUpdate(),在这里值还没有改变呢,
高手指点一下。
我的大体程序是,启动运行后,我通过设定的一个全局变量使程序进入一个循环中。while(Paused){}
当我点暂停后,Paused为true;函数出在一个无限循环中。切换当前窗体,然后在切换回来后,点继续按钮,使paused为false,在往下运行的时候就出现了错误,与按钮控件关联的成员变量的m_hwnd值改变了,导致Invalidate错误,到底怎么回事。高手指点一下。
以上介绍了“ CFormView afxwin2inl中的Invalidate()问题”的问题解答,希望对有需要的网友有所帮助。
本文网址链接:http://www.codes51.com/itwd/2325809.html