MFC 绘图 程序死机

mceet 2018-06-14 11:55:35
MFC 程序 运行一段时间后总是死机:
就是这句在死机:((CMainFrame*)(AfxGetApp()->GetMainWnd()))->GetActiveView()->Invalidate(TRUE);

通过任务管理器观察,内存和GDI对象也没增加。是什么原因,怎么解决。
...全文
745 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2018-06-23
  • 打赏
  • 举报
回复
百度搜“GDI泄露检测”
boylafong 2018-06-22
  • 打赏
  • 举报
回复
onpaint里面打印看有没有一直做事情
zgl7903 2018-06-22
  • 打赏
  • 举报
回复
引用 楼主 mceet 的回复:
MFC 程序 运行一段时间后总是死机:
就是这句在死机:((CMainFrame*)(AfxGetApp()->GetMainWnd()))->GetActiveView()->Invalidate(TRUE);

通过任务管理器观察,内存和GDI对象也没增加。是什么原因,怎么解决。


逐层判断指针的有效性,否则很容易引起非法地址访问异常
这不是鸭头 2018-06-22
  • 打赏
  • 举报
回复
明显就是GDI 泄露导致的异常
Eleven 2018-06-21
  • 打赏
  • 举报
回复
你怎么判断是由于刷新引起的??
c_joewang 2018-06-21
  • 打赏
  • 举报
回复
这句代码应该是在onpaint的执行过程中调用了,这个调用会产生WM_PAINT消息,又重新进入了onpaint,又产生了WM_PAINT消息... 类似于出现死循环所以“死机”了
向立天 2018-06-16
  • 打赏
  • 举报
回复
你程序是基于文档视图的?一运行就死机?
待续_1006 2018-06-15
  • 打赏
  • 举报
回复
((CMainFrame*)(AfxGetApp()->GetMainWnd()))->GetActiveView()获取视图类的指针,要判断是否为空 ->Invalidate(TRUE)会强制调用OnPaint ,看OnPaint 的代码有没有问题
schlafenhamster 2018-06-14
  • 打赏
  • 举报
回复
上 OnPaint 代码。
叶恭介叶恭介 2018-06-14
  • 打赏
  • 举报
回复
GetActiveView可能返回是个空值
tiger波波 2018-06-14
  • 打赏
  • 举报
回复
程序死机了怎么看出来在那句死的? 看看GetActiveView()有没有取空的情况

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧