程序运行13个小时后弹出提示“必须的资源无法得到”,请问如何解决?

SexualMan 2005-06-17 11:27:05
该程序是一个基于对话框的小程序,使用了 CSXButton类。

问题现象如下:
运行几个小时不会有问题,但是运行十多个小时后弹出提示“必须的资源无法得到”,对话框的背景色本来是蓝色,出现问题后变回了普通窗体的颜色,
所有的Button都消失了,窗体上的所有Picture控件的Picture也消失了。
...全文
412 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
SexualMan 2005-06-21
  • 打赏
  • 举报
回复
谢谢各位
问题解决了
结贴
bluishsky 2005-06-20
  • 打赏
  • 举报
回复
程序某个地方有内存泄露,长时间运行后,内存耗尽.
icansaymyabc 2005-06-20
  • 打赏
  • 举报
回复
就是资源泄露。

问题不一定出现在你申请不到资源的地方。其它地方如有泄漏,导致内存耗尽,这里同样申请不到资源。建议你用vc2005 来编译一下你的源码。vc2005的功能实在太强大,他有一个连vc2003都没有的“分析”选项,可以把你程序中的内存泄漏,访问野指针,类型转换隐患都全部找出来,真是令人佩服。
SexualMan 2005-06-20
  • 打赏
  • 举报
回复
HBRUSH CSaleMang::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);

// TODO: Change any attributes of the DC here
if(nCtlColor==CTLCOLOR_LISTBOX)
{
pDC->SetTextColor(RGB(0,0,0));
pDC->SetBkColor(RGB(233,233,220));
HBRUSH b=CreateSolidBrush(RGB(233,233,220));
return b;
}
else if(nCtlColor==CTLCOLOR_SCROLLBAR)
{
pDC->SetTextColor(RGB(0,0,0));
pDC->SetBkColor(RGB(233,233,220));
HBRUSH b=CreateSolidBrush(RGB(233,233,220));
return b;
}
else if(nCtlColor==CTLCOLOR_EDIT)
{
pDC->SetTextColor(RGB(0,0,0));
pDC->SetBkColor(RGB(233,233,220));
HBRUSH b=CreateSolidBrush(RGB(233,233,220));
return b;
}
else if(nCtlColor==CTLCOLOR_STATIC)
{
pDC->SetTextColor(RGB(0,0,0));
pDC->SetBkColor(RGB(160,180,220));
HBRUSH b=CreateSolidBrush(RGB(160,180,220));
return b;
}
else if(nCtlColor==CTLCOLOR_DLG)
{
pDC->SetTextColor(RGB(0,0,0));
pDC->SetBkColor(RGB(160,180,220));
HBRUSH b=CreateSolidBrush(RGB(160,180,220));
return b;
}
// TODO: Return a different brush if the default is not desired
return hbr;
}

CreateSolidBrush导致的资源如何解决???
fisker0303 2005-06-17
  • 打赏
  • 举报
回复
恐怖的内存泄露。
oyljerry 2005-06-17
  • 打赏
  • 举报
回复
检查GDI等画图资源
myhaocat 2005-06-17
  • 打赏
  • 举报
回复
同意
miladuo 2005-06-17
  • 打赏
  • 举报
回复
同意楼上的
dreamy 2005-06-17
  • 打赏
  • 举报
回复
应该是GDI泄露了,看看你的DC, Pen,Brush等等是不是用完没删除
idAnts 2005-06-17
  • 打赏
  • 举报
回复
你有资源泄露,用BoundsChecker查查。
Avoid 2005-06-17
  • 打赏
  • 举报
回复
检查代码。。。
artmouse 2005-06-17
  • 打赏
  • 举报
回复
一定是内存泄漏的问题
modnar 2005-06-17
  • 打赏
  • 举报
回复
写CSXButton的是个垃圾
SexualMan 2005-06-17
  • 打赏
  • 举报
回复
HBRUSH b=CreateSolidBrush(RGB(160,180,220));
//////////////////////////////////////////////
这个b应该改成成员变量
SexualMan 2005-06-17
  • 打赏
  • 举报
回复
HBRUSH CSaleMang::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);

// TODO: Change any attributes of the DC here
if(nCtlColor==CTLCOLOR_LISTBOX)
{
pDC->SetTextColor(RGB(0,0,0));
pDC->SetBkColor(RGB(233,233,220));
HBRUSH b=CreateSolidBrush(RGB(233,233,220));
return b;
}
else if(nCtlColor==CTLCOLOR_SCROLLBAR)
{
pDC->SetTextColor(RGB(0,0,0));
pDC->SetBkColor(RGB(233,233,220));
HBRUSH b=CreateSolidBrush(RGB(233,233,220));
return b;
}
else if(nCtlColor==CTLCOLOR_EDIT)
{
pDC->SetTextColor(RGB(0,0,0));
pDC->SetBkColor(RGB(233,233,220));
HBRUSH b=CreateSolidBrush(RGB(233,233,220));
return b;
}
else if(nCtlColor==CTLCOLOR_STATIC)
{
pDC->SetTextColor(RGB(0,0,0));
pDC->SetBkColor(RGB(160,180,220));
HBRUSH b=CreateSolidBrush(RGB(160,180,220));
return b;
}
else if(nCtlColor==CTLCOLOR_DLG)
{
pDC->SetTextColor(RGB(0,0,0));
pDC->SetBkColor(RGB(160,180,220));
HBRUSH b=CreateSolidBrush(RGB(160,180,220));
return b;
}
// TODO: Return a different brush if the default is not desired
return hbr;
}


是这个函数引起的泄露吧?
idAnts 2005-06-17
  • 打赏
  • 举报
回复
那你看你的gdi资源呢?
SexualMan 2005-06-17
  • 打赏
  • 举报
回复
为什么我看内存占用量并没有增加呢
vcmute 2005-06-17
  • 打赏
  • 举报
回复
资源泄露,注意DeleteObject,ReleaseDC等释放

15,979

社区成员

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

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