mousemove事件中,不停地画图,导致系统资源溢出!!????

charryli 2005-05-19 02:21:25
我在mousemove中调用一个函数
void CTableEx::DrawDragRect(CDC *pDC, const CRect &rect, int nDrawMode)
{
CPen newPen(PS_DOT,1,RGB(255,0,0));
CPen* pOldPen=pDC->SelectObject(&newPen);
int nOldMode=pDC->SetROP2(R2_NOT);

pDC->MoveTo(rect.left,rect.top);
pDC->LineTo(rect.right,rect.top);
pDC->LineTo(rect.right,rect.bottom);
pDC->LineTo(rect.left,rect.bottom);
pDC->LineTo(rect.left,rect.top);

pDC->SetROP2(nOldMode);
pDC->SelectObject(pOldPen);
newPen.DeleteObject();
pOldPen=NULL;
}
多次移动触发mousemove事件后(不停的移动,大约3分钟后),系统资源就崩溃,出现系统资源不足的错误,而且createpen等函数都无法执行
...全文
128 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
中级伴读 2005-05-20
  • 打赏
  • 举报
回复
这里好像也没有问题!
charryli 2005-05-20
  • 打赏
  • 举报
回复
感谢各位参与!
charryli 2005-05-20
  • 打赏
  • 举报
回复
搞定:)
原来是出在GetDC()函数上,一般以为CDC * pDC=GetDC()没什么的,当成普通的指针,其实不然,每个DC都必须ReleaseDC(pDC)才行
charryli 2005-05-19
  • 打赏
  • 举报
回复
这是OnPaint函数,主要原因是GDI泄漏,不知道什么原因
void CTableEx::OnPaint()
{
CPaintDC dc(this); // device context for painting
CRect rect;
GetClientRect(&rect);
CBrush newbrush, * oldbrush;
newbrush.CreateSolidBrush(RGB(255,255,255));
oldbrush=dc.SelectObject(&newbrush);
dc.FillRect(&rect, &newbrush);
dc.SelectObject(oldbrush);
newbrush.DeleteObject();
oldbrush=NULL;
// Do not call CWnd::OnPaint() for painting messages
}
younggle 2005-05-19
  • 打赏
  • 举报
回复
这里是没有问题的,主要看看刷新函数有没有问题,如OnPaint,OnDraw函数。
dongfa 2005-05-19
  • 打赏
  • 举报
回复
这段代码好像没有问题,可能是mousemove函数里面.帖出来看看.

19,473

社区成员

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

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