BCB 调用动态库返回值是CBitmap类型

baby52u 2010-11-11 04:36:38
之前阿土的帖子也提到了类似问题
http://topic.csdn.net/u/20100812/21/96b6bc87-e7ac-4f0a-91da-4b5b1486bff6.html

最近我也遇到了同样的疑问

毛毛在贴中回复内容如下
动态库居然返回一个包装类,这种设计~~事件上返回一个HBITMAP就没问题了。
不说了,既然已经遇上了,偶的建议是先打开VC(要和编译这个DLL的VC一样的版本,编译参数也要尽量相同),用offsetof(CBitmap,m_hObject)取得m_hObject成员在CBitmap中的相对位置,如int offBmp = offsetof(CBitmap, m_hObject)。
然后用BCB,声明改成char* (GETPREVBITMAP)(HWND hwnd,int nBMPWIDTH,int nBMPHEIGHT);
取得这个char*指针后偏移offBmp就是HBITMAP了,接下来就好办鸟~~

我的疑问是需要把char*指针偏移offBmp后 直接(HBITMAP)转义后付给Bitmap->Handle吗?

但是测试了一下这样得到的Bitmap是空的

谁能具体解答下
...全文
89 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
Waiting4you 2010-11-16
  • 打赏
  • 举报
回复
如果返回的是CBitmap*的话,用偏移绝对是能取到的,只是资源泄漏是肯定的了,除非动态库还提供了回收的函数.
想跨编译器,最好的做法还是返回HBITMAP.
  • 打赏
  • 举报
回复
在用VC封装下吧
返回HBITMAP
tst1255 2010-11-14
  • 打赏
  • 举报
回复
如果dll里的函数不多,就用vc再写一个dll封装一下吧。返回值封装成HBITMAP 类型, 或其它你想要的类型。
baby52u 2010-11-11
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 ccrun 的回复:]
偏移offBmp后得到HBITMAP?这方法是谁告你的?
[/Quote]

惭愧呀 这一块确实不是很了解 还请指教
银点 2010-11-11
  • 打赏
  • 举报
回复
我很好学的。
ccrun.com 2010-11-11
  • 打赏
  • 举报
回复
偏移offBmp后得到HBITMAP?这方法是谁告你的?

13,825

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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