鸡啄米
VS2010/MFC编程入门之五十(图形图像:GDI对象之画笔CPen)›评论
-
35. 风过停了:
博主您好,可以说我是看着您的博文学的MFC,最近作图遇到问题,就您上面的程序,让程序持续作图,一段时间后程序就崩溃了,不知道是什么原因,调试跟踪说是pDC(m_picDraw.GetDC() )为NULL了,不知道怎么解决?2017/1/19 10:31
-
34. 失眠的孩子先看到明天:
历经千辛万苦终于做出来了。发现犯了两个错误。第一:把OnTimer添加到了CAboutDlg类下,原本应该在CExample50Dlg类下。不知道这个是什么区别。出错之后DrawWave函数显示没有被定义。第二:我把定义数组的程序放在了头文件调用程序的下方,而他原本应该放在为类定义函数,变量的那个函数里边。放在头文件调用程序下之后,显示这个数组被重复定义了。不知道为什么。。2016/9/16 16:52
-
33. 老四:
我基本上看懂你写的代码,但是你GetDC 没有释放DC 内存已经溢出了。AngelEagle 于 2018-11-29 11:27:47 回复这位仁兄!请问,运行一段时间后,程序会Crash掉,在wingdi.cpp 的CBrush* CDC::SelectObject(CBrush* pBrush)函数中 ASSERT(m_hDC != NULL);出错。是不是由于CDC对象没有释放的原因呢!我在OnTimer()最后面添加了ReleaseDC(m_waveDraw.GetDC());运行时间长一点,但是Crash在afxwin32.inl
_AFXWIN_INLINE int CWnd::ReleaseDC(CDC* pDC)
{ ASSERT(::IsWindow(m_hWnd)); return ::ReleaseDC(m_hWnd, pDC->m_hDC); }
这个问题该如何解决呢?
AngelEagle 于 2018-11-29 11:29:39 回复或者说我该如何正确地RealeaseDC呢。AngelEagle 于 2018-11-29 13:00:06 回复知道如何RealeaseDC 了,在OnTimer()中 将绘制波形图的那句改成这样
//绘制波形图
CDC *pDC = this->GetDC();
DrawWave(pDC, rectPicture);
在CDialog::OnTimer(nIDEvent);后添加
ReleaseDC(pDC);
这样就OK了,中午吃饭运行一个多小时没问题,通过资源管理器查看该进程的内存情况,发现变化不大,没RealeaseDC之前内存会持续增长,我的达到10936就挂了。应该就是这样了
2016/9/13 15:48
-
32. caesar:
感谢博主,在这里学到不少,谢谢博主开源,共享精神2016/8/25 10:17
-
31. 进击的2016:
虽然不抱多少希望,但还是留个言吧。我照这个弄出来以后,发现长时间运行后会自动闪退,把间隔调成15毫秒后大概1分半就会闪退,然后经过排除,发现问题可能出现在画图函数上,只要我同时把画背景的语句''pDC->Rectangle(rectPicture);''和画波形的语句''pDC->LineTo(nX, nY);''注译起来就貌似就能一直运行了,但这肯定不是办法啊,求解决2016/5/31 14:33
发表评论