社区
资源
帖子详情
一个极罕见的问题,在win2k下一点问题没有, 在win98下非法操作, 弹出MessageBox "必要的资源无法得到"
code_cold
2002-08-19 02:58:19
一个极罕见的问题,在win2k下一点问题没有, 在win98下非法操作, 弹出MessageBox "必要的资源无法得到"
我把位图作为资源放在*.EXE文件中,并在不同的*.cpp文件中多次调用CBitmap::LoadBitmap(UINT ID), 是否这个原因呢 ??
我WIN98下无VC,无法调试,高手可告我是何原因,
分光了, 大家若近来就帮推一下.
...全文
47
19
打赏
收藏
一个极罕见的问题,在win2k下一点问题没有, 在win98下非法操作, 弹出MessageBox "必要的资源无法得到"
一个极罕见的问题,在win2k下一点问题没有, 在win98下非法操作, 弹出MessageBox "必要的资源无法得到" 我把位图作为资源放在*.EXE文件中,并在不同的*.cpp文件中多次调用CBitmap::LoadBitmap(UINT ID), 是否这个原因呢 ?? 我WIN98下无VC,无法调试,高手可告我是何原因, 分光了, 大家若近来就帮推一下.
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
19 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
Kiloy
2002-08-19
打赏
举报
回复
同意
gliderzhang
2002-08-19
打赏
举报
回复
我遇见过,很好解决。
这个问题一般是由于你构造了gdi对象,但是没有有效的销毁,导致再次申请
gdi资源的时候,系统就告诉你“必要的资源无法得到”。问题不是出在LoadBitmap,而是你的CBitmap对象没有被释放。
提醒一点,在gdi对象销毁以前必须从设备上下文中分离出来。就是说如果你的CBitmap被选进了设备上下文,则销毁以前必须选出。你可以在选进的时候把返回的旧的指针保存起来,要选出的时候,选中这个旧的指针就可以了。
看看内幕第四版67页,有比较详细的解释。
给个例子:(没有调试,只是告诉你大概意思)
{
......
CDC *pDC=GetDlgItem(IDC_BUTTON)->GetDC();
CDC cDC;
CBitmap *bitmapold,YouCBitmap;
YouCBitmap.LoadBitmap(...);
cDC.CreateCompatibleDC(pDC);
cDC.SelectObject(YouCBitmap);
......
cDC.SelectObject(bitmapold);//cDC在本函数退出的时候销毁,如果没有
//本语句,则YouCBitmap仍在设备上下文中,会销毁失败。
ReleaseDC(pDC);
......
}
In355Hz
2002-08-19
打赏
举报
回复
应该就是Win98回收GDI资源的Bug导致的,有时在OnPaint或OnTimer里作图,每次都重新创建所需的GDI对象,如果长时间运行程序,就会导致“必要的资源无法得到”的警告。
一般为了避免这种情况,需要多次使用的GDI对象都是一次性创建以后保存起来,尽量减少创建对象的次数。
同桌老王
2002-08-19
打赏
举报
回复
一般情况下,window api都告诉你这个函数得到的资源文件实例句柄都是临时的,要注意保存,并在取得句柄后要立即使用,不能存储,因为有可能变化什么的,msdn如是说
boris963
2002-08-19
打赏
举报
回复
这个问题我也遇到过,可能就是loadbitmap的问题,有哪位高人知道确切答案请告诉大家.
In355Hz
2002-08-19
打赏
举报
回复
注意释放Load的Bitmap,最好显式调用DeleteObject释放。
还有,Win98好像有一个问题,它不会及时收集使用过的GDI资源,如果你的程序里无数次创建和撤销大量GDI对象,即使没有泄漏,也很快会出现“必要的资源无法得到”的警告。
gameboy999
2002-08-19
打赏
举报
回复
估计是你的位图有点问题,
windows的loadxxx函数有些确实有点问题的,
我也碰到过这个问题,你可以试试把位图换上几幅,也许就不会有问题了
赵博强
2002-08-19
打赏
举报
回复
是不是跟字符串的类型有关。
FG_Hope
2002-08-19
打赏
举报
回复
估计是有资源泄露,你可以用Boundcheck查一下。
CppCore
2002-08-19
打赏
举报
回复
gz
code_cold
2002-08-19
打赏
举报
回复
谁的WIN98都出现了问题, 而WIN2K没有
ynli2002
2002-08-19
打赏
举报
回复
会不会是你的98有问题
nbgyf
2002-08-19
打赏
举报
回复
没遇到过
怪
你在win98下编译一下,再运行
试试
code_cold
2002-08-19
打赏
举报
回复
UP
txdxun
2002-08-19
打赏
举报
回复
需要释放Bitmap的资源,要是说得不对大家见笑了
txdxun
2002-08-19
打赏
举报
回复
资源消耗
liaomu
2002-08-19
打赏
举报
回复
没遇到过。
code_cold
2002-08-19
打赏
举报
回复
2: lqbn(长天)
你是否 在不同的*.cpp文件中多次调用CBitmap::LoadBitmap(UINT ID) ??
你在win2k下有无问题 ??
lqbn
2002-08-19
打赏
举报
回复
极度关注中。
我也碰到的一样的问题。是在一个线程中为listctrl添加item时发生的。
外挂编写完全攻略
外挂编写完全攻略一、先说一下写
一个
外挂需要什么条件 1、熟练的C语言知识 目前的外挂大部分都是用BC或者是vc写的,拥有熟练的C语言知识是写外挂的基本条件 2、具有很强的汇编基础 一般游戏都不可能有原代码的,必须...
[转] 《完美程式设计指南》Effective Delphi
Effective Delphi条款1:不管怎么样,请让你的Project至少user一次SysUtils.pas单元很多使用Delphi的人都对Delphi有着这样
一个
抱怨:Delphi虽然开发效率高,但是其编译出来的程序却是太大。使用Delphi5新建
一个
...
编程必备知识大杂烩
亲手打造
一个
QQ恶作剧程程序原理:获取系统中的所有进程,并保存在
一个
数组中,然后在数组中查找含有QQ,oicq,qq,OICQ字样的进程,如果找到就立即杀掉该进程.这样你一运行QQ,QQ进程就会被立即杀掉,也就是说如果该恶作剧...
编写外挂完全攻略
一、先说一下写
一个
外挂需要什么条件 1、熟练的C语言知识 目前的外挂大部分都是用BC或者是vc写的,拥有熟练的C语言知识是写外挂的基本条件 2、具有很强的汇编基础 一般游戏都不可能有原代码的,必须*反汇编...
《完美程式设计指南》Effective Delphi
Effective Delphi条款1:不管怎么样,请让你的Project至少user一次SysUtils.pas单元很多使用Delphi的人都对Delphi有着这样
一个
抱怨:Delphi虽然开发效率高,但是其编译出来的程序却是太大。使用Delphi5新建
一个
...
资源
2,586
社区成员
18,441
社区内容
发帖
与我相关
我的任务
资源
VC/MFC 资源
复制链接
扫一扫
分享
社区描述
VC/MFC 资源
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章