程序运行几个小时后,界面卡死,后台在运行

tmac_roy 2014-02-22 11:44:12
写了一个程序主要实现在服务端接受数据,然后解包显示在界面上,界面上显示一个CListCtrl和一个CStatic,CStatic用于显示图片,CListCtrl显示数据。现在的问题是运行几个小时候界面会卡死,整个界面都不动了,但是后台一直能收到数据,该怎么解决呢?
下面是显示图片的代码
void CPicStatic::OnPaint()
{
CPaintDC dc(this); // device context for painting
// TODO: 在此处添加消息处理程序代码
// 不为绘图消息调用 CStatic::OnPaint()
//建立图形对象
Graphics mGraphics(this->GetDC()->m_hDC);
//装入图像文件
Bitmap bmp(m_strPath.AllocSysString());
//获取控件大小
CRect lRect;
this->GetClientRect(&lRect);
RectF rt(lRect.left,lRect.top,lRect.right,lRect.bottom);
mGraphics.DrawImage(&bmp,rt);
}
...全文
527 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
hxingz 2014-02-22
  • 打赏
  • 举报
回复
哦,对头,正如2楼所说,应该是ReleaseDC,另外一个应该用::SysFreeString。
Autumn_Gao 2014-02-22
  • 打赏
  • 举报
回复
//建立图形对象 Graphics mGraphics(this->GetDC()->m_hDC); 看看这句是否是内存泄漏了?一般调用GetDC之后都要调用ReleaseDC进行释放的
hxingz 2014-02-22
  • 打赏
  • 举报
回复
AllocSysString()和GetDC()都有相应的释放函数,请调用FreeSysString和DeleteDC后重试。
神-气 2014-02-22
  • 打赏
  • 举报
回复
任务管理器,查看一下GDI对象是否一直在增长。
schlafenhamster 2014-02-22
  • 打赏
  • 举报
回复
1. CPaintDC dc(this); // device context for painting // TODO: 在此处添加消息处理程序代码 // 不为绘图消息调用 CStatic::OnPaint() //建立图形对象 2. Graphics mGraphics(this->GetDC()->m_hDC);// 在这里应该用dc

15,979

社区成员

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

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