Tom*_*Tom 4 delphi dll visual-c++
我想创建一个DLL插件,用于Delphi和其他语言(主要是C++).如何以C++和Delphi友好的方式传递位图?它可以只是Delphi TBitmap的一个句柄吗?C++程序应该能够使用WinApi解码它,对吧?
您无法传递Delphi TBitmap对象,因为这仅对Delphi代码有意义.您需要传递的是HBITMAP一个Windows位图的句柄.
Delphi TBitmap类只是Windows位图的包装器,可以提供HBITMAP句柄.你需要注意的是这些手柄的所有权.
如果你有一个Delphi,TBitmap你可以HBITMAP通过调用a的ReleaseHandle方法来获得TBitmap.返回的句柄ReleaseHandle不再由TBitmap对象拥有和管理,这正是您想要的.您将该句柄传递给C++代码并让它成为所有者.它负责处理该手柄.
文档ReleaseHandle说:
返回位图的句柄,以便TBitmap对象不再知道句柄.
使用ReleaseHandle取消位图与位图句柄的关联.当您需要为将承担所有权(或销毁)位图句柄的例程或对象提供位图句柄时,请使用它.
在另一个方向,您的Delphi代码将从HBITMAPC++代码接收并获得所有权.通过分配实例的Handle属性来做到这一点TBitmap.
细节因语言而异,但无论如何,所有人都能够处理HBITMAP.
| 归档时间: |
|
| 查看次数: |
1181 次 |
| 最近记录: |