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代码将从HBITMAP
C++代码接收并获得所有权.通过分配实例的Handle
属性来做到这一点TBitmap
.
细节因语言而异,但无论如何,所有人都能够处理HBITMAP
.
归档时间: |
|
查看次数: |
1181 次 |
最近记录: |