CFormView afxwin2.inl中的Invalidate()问题
时间:2011-12-19
来源:互联网
我的程序是工业上用的数控系统,窗体可以切换。我在其中一个窗体中运行程序。中间暂停,切换到另一个窗体,然后在回到先前的窗体中。我在第一个窗体中建了几个自定义的按钮控件。可是当我退出在回到原窗体继续运行程序时,会出现一个断言错误。错误代码为
_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错误,到底怎么回事。高手指点一下。
作者: lzz4513 发布时间: 2011-12-19
作者: lzz4513 发布时间: 2011-12-19
作者: shen_wei 发布时间: 2011-12-19
作者: lzz4513 发布时间: 2011-12-19
作者: lzz4513 发布时间: 2011-12-19
其实关键问题就在与,我的暂停是采用的无限循环,在切换窗体的时候,在返回后,窗体应该是被重建了一次,可这个时候在无限循环中控件关联的成员变量的句柄已经为空了,怎么回事呢,怎样重获成员变量值啊,
这个问题怎么避免呢,
作者: lzz4513 发布时间: 2011-12-20
C/C++ code
HWND GetSafeHwnd( ) const;
注意,它属于CWnd类成员函数。
作者: fight_in_dl 发布时间: 2011-12-20
作者: lzz4513 发布时间: 2011-12-20
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28