CImage 中的 operator HBITMAP() 返回的句柄无效,请问是怎么回事?

ckacka 2005-03-03 01:09:24
在 CDoc 中申明了 CImage m_img;
在 CView 中可以调用其功能
但是使用 ::GlobalLock(HBITMAP(pDoc->m_img)) 返回无效指针
使用 GetLastError() 得到 “无效句柄”

请问这是怎么回事,谢谢!
ckacka
...全文
467 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
hushuangyan74 2005-03-03
  • 打赏
  • 举报
回复
请问你要锁住这个句柄干什么用,如果你是要读取图像的话:可以直接用CImage对象m_img来读取就行了,怎么要这样绕弯呢@!
你要加载图像用m_img.Load("abc.bmp");
要保存用m_img.Save("abc.bmp");
等等,,,,
你还锁定句柄干什么!
hushuangyan74 2005-03-03
  • 打赏
  • 举报
回复
上面的语句跟HBITMAP hBitMap = (HBITMAP)(pDoc->m_img);
是一样的,所以我是多此一举,,,,
算了,不讲了,去修炼去,,,,闪了!!!
ckacka 2005-03-03
  • 打赏
  • 举报
回复
hushuangyan74()
我不是得不到句柄,是无法锁定这个句柄
hushuangyan74 2005-03-03
  • 打赏
  • 举报
回复
那就这样吧,应该可以了。
HBITMAP hBitMap=(HBITMAP)pDoc->m_img.operator HBITMAP();
就这样!
ckacka 2005-03-03
  • 打赏
  • 举报
回复
>> 可以的,只要是内存对象,都可以用来锁住,并且返回对象的首个bit地址
纠错
可以的,只要是内存对象,都可以用来锁住,并且返回对象的首个byte地址
ckacka 2005-03-03
  • 打赏
  • 举报
回复
m_hBitmap 是私有成员

inline CImage::operator HBITMAP() const throw()
{
return( m_hBitmap );
}
hushuangyan74 2005-03-03
  • 打赏
  • 举报
回复
楼主不知道你现在要干什么事,
你说:如果使用HBITMAP hBitMap = (HBITMAP)(pDoc->m_img);
能返回正常值么?
这个肯定有错误,
1.HBITMAP是句柄(在内存中是漂移的),而m_img是一个CImage对象(在内存中是固定的)。当然把句柄锁定后,m_img就可以访问这个句柄指向的内存中的值了。。。。
你的问题可以这样用:
HBITMAP hBitMap=(HBITMAP)pDoc->m_img.m_hBitmap,或者就干脆用pDoc->m_img.m_hBitmap就可以了(不过在使用前请先打开图像文件,否则一切后果自负呀!)。

ckacka 2005-03-03
  • 打赏
  • 举报
回复
HBITMAP hBitMap = (HBITMAP)(pDoc->m_img);
可以返回正常值的,我早就试过了。

但是GlobalLock就不行。

可以的,只要是内存对象,都可以用来锁住,并且返回对象的首个bit地址。
晨星 2005-03-03
  • 打赏
  • 举报
回复
GlobalLock可以用来锁BitMap对象么?
晨星 2005-03-03
  • 打赏
  • 举报
回复
如果使用
HBITMAP hBitMap = (HBITMAP)(pDoc->m_img);
能返回正常值么?
快乐鹦鹉 2005-03-03
  • 打赏
  • 举报
回复
手头没有CImage类啊。
ckacka 2005-03-03
  • 打赏
  • 举报
回复
…… ft~~ who 怕 who?

你帮我把问题解决了多少分都可以。
Featured 2005-03-03
  • 打赏
  • 举报
回复
我帮你咬楼主

楼主快给我分,不然咬你了:)
晨星 2005-03-03
  • 打赏
  • 举报
回复
被咬了,郁闷。:(
ckacka 2005-03-03
  • 打赏
  • 举报
回复
steedhorse(晨星):

咬你哦……^_^
ckacka 2005-03-03
  • 打赏
  • 举报
回复
sigh... -_-!

我肯定要读入图像先,不然怎么“在 CView 中可以调用其功能”
我的 OnDraw 工作正常;
晨星 2005-03-03
  • 打赏
  • 举报
回复
就是,这么简单的东西也来问,小红帽的ID是不是被盗用了?
嘎嘎嘎嘎。。。。
晨星 2005-03-03
  • 打赏
  • 举报
回复
就是,这么简单的东西都搞不懂,小红帽的ID是不是被人盗用了?
嘎嘎嘎嘎。
老夏Max 2005-03-03
  • 打赏
  • 举报
回复
学习。估计一楼说的正确,Debug一下看看就知道了!
晨星 2005-03-03
  • 打赏
  • 举报
回复
帮顶。
加载更多回复(1)

19,468

社区成员

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

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