相当奇怪的小问题:出现屏保后我的软件界面就会死掉了…………急……分不够另开帖加啊

modaoshi3002 2007-02-12 12:00:23
请问各位大哥这是怎么回事啊??
我在我的软件里有很多
s1.SetBitmap( ::LoadBitmap(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDB_OPEN)) );

软件使用时,只要一出现屏保,关闭后,有80%的几率,有很多一部分用setbitmap加上去的图片就没有了,再重新setbitmap也没用,只能把软件重新启动。

各位帮忙啊,我只能送100分,不够我再开帖加啊~~~~~~~~
...全文
360 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
dazedase 2007-02-12
  • 打赏
  • 举报
回复
对于::LoadBitmap出来的hBitmap需要DeleteObject(hBitmap);
内存DC要DeleteDC
new出来的指针要Delete
在OnDraw、OnPaint等重绘过程中尽量少new或Create资源,经常使用的资源设成全局,启动时创建,重绘时调用,退出时销毁
dazedase 2007-02-12
  • 打赏
  • 举报
回复
很可能是你的界面重绘存在资源或内存泄露.
你可以试验用其它程序窗口不断挡住你的程序界面再移开,看看会不会死掉
东文-桑晨 2007-02-12
  • 打赏
  • 举报
回复
如果是静态的图片,直接使用Picture控件,然后把你的bmp图片导入资源里面就可以了
dazedase 2007-02-12
  • 打赏
  • 举报
回复
你要把CFont * f定义成全局的,在析构中再f->DeleteObject();,s1中的位图hbitmap也定义成全局,OnCreate时LoadBitmap,OnDestroy时DeleteObject(hBitmap);
modaoshi3002 2007-02-12
  • 打赏
  • 举报
回复
谢谢happyness44(风雨人生)
我的s1.SetBitmap( ::LoadBitmap(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDB_OPEN)) );
也是在OnCreate中进行的
modaoshi3002 2007-02-12
  • 打赏
  • 举报
回复
多谢dazedase的持续关注,不胜感激啊
我也在找是不是GDI资源泄漏,发现在我的一个继承自CWnd的类中使用了CFont
我是在OnCreate中用的
CFont * f;
f = new CFont;
f->CreateFont(.......);

s2.SetFont(f); //s2是在这个CWnd上的一个CStatic,

我如何销毁这CFont对象呢,如果在这里(OnCreate函数中)f->DeleteObject();的话
就没意义了啊。

还有,上面的s1也是一个CStatic,用来放一张位图,也需释放吗?改怎么释放呢?

谢谢啊
happyness44 2007-02-12
  • 打赏
  • 举报
回复
LoadBitmap不要在OnPaint中进行
dazedase 2007-02-12
  • 打赏
  • 举报
回复
CPaintDC是不用,其它如果的你自己创建的就需要了

s1.SetBitmap( ::LoadBitmap(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDB_OPEN)) );
不要写在OnPaint中,不知道你的s1是个什么控件,如果是按钮等派生类则有可能是s1本身的问题,::LoadBitmap会创建一个hbitmap,有可能s1自己没有把它DeleteObject

主对话框的非客户区也变的模糊不清了:如果不是自绘的话有可能是GDI资源泄露,有很多Object没有DeleteObject
modaoshi3002 2007-02-12
  • 打赏
  • 举报
回复
多谢dazedase(什么也不懂、什么也不会、我能干什么?)
我是在OnPaint中画的图,
CPaintDC不是不用delete的吗,

s1.SetBitmap( ::LoadBitmap(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDB_OPEN)) );
这句我也是在书上抄的好像也不用释放句柄啊

现在问题更加严重了,界面本身是不会死掉,就是这个LoadBitmap出来的图会没有,
而且主对话框的非客户区也变的模糊不清了……
内容概要:本文系统阐述了嵌入式功能安全领域的两大核心标准——IEC 61508与ISO 26262的完整体系,涵盖其定位、关系、技术要求及认证流程。IEC 61508作为通用工业功能安全基础标准,适用于PLC、机器人、轨道交通等系统,采用SIL等级划;ISO 26262则是其在汽车行业的衍生标准,专用于车载电控单元(如BMS、ESP、自动驾驶控制器),采用ASIL等级评估。文章详细解析了两个标准在风险评估方法(如HARA与风险图法)、软硬件设计规范、失效析、安全机制实现(如看门狗、CRC校验、冗余设计)等方面的异同,并提供了从需求析到认证落地的全流程实施路径,包括安全生命周期管理、文档证据链构建及第三方认证机构介绍。; 适合人群:从事工业自动化或汽车电子领域嵌入式系统设计、功能安全开发与认证工作的工程师、项目经理及安全析师,具备一定电子电气或软件开发背景的专业人员; 使用场景及目标:①指导企业开展符合IEC 61508或ISO 26262的功能安全产品设计与认证;②帮助研发团队理解SIL/ASIL等级判定逻辑与软硬件安全机制实现方式;③支持撰写安全需求文档、FMEDA报告及准备第三方审核材料; 阅读建议:此资源兼具理论体系与工程实践,建议结合具体项目场景对照标准条款进行研读,并重点关注安全生命周期各阶段的交付物要求与典型安全防护设计示例,以提升实际应用能力。

15,975

社区成员

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

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