Delphi 如何在C++;德尔菲呢?

Delphi 如何在C++;德尔菲呢?,delphi,visual-c++,dll,Delphi,Visual C++,Dll,我想创建一个DLL插件,用于Delphi和其他语言(主要是C++)。 如何在C++和Delphi友好的方式下传递位图?它能只是Delphi TBitmap的一个句柄吗?C++程序应该能够使用WiAPI解码它,对吗?< P>你不能通过Delphi tBMPMAP>/COD>对象,因为这只对Delphi代码有意义。您需要传递的是一个,一个Windows位图的句柄 DelphiTBitmap类只是Windows位图的包装器,可以提供HBITMAP句柄。你需要注意的是这些手柄的所有权 如果您有一个De

我想创建一个DLL插件,用于Delphi和其他语言(主要是C++)。
如何在C++和Delphi友好的方式下传递位图?它能只是Delphi TBitmap的一个句柄吗?C++程序应该能够使用WiAPI解码它,对吗?

< P>你不能通过Delphi <代码> tBMPMAP>/COD>对象,因为这只对Delphi代码有意义。您需要传递的是一个,一个Windows位图的句柄

Delphi
TBitmap
类只是Windows位图的包装器,可以提供
HBITMAP
句柄。你需要注意的是这些手柄的所有权

如果您有一个Delphi
TBitmap
,您可以通过调用
TBitmap
的方法获得一个
HBITMAP
releasehold
返回的句柄不再由
TBitmap
对象拥有和管理,这正是您想要的。您将该句柄传递给C++代码,并将其变成所有者。它负责处理那个把手

文件说明:

返回位图的句柄,以便TBitmap对象不再 知道把手的事

使用释放句柄解除位图与位图句柄的关联。 当需要为例程或对象提供位图句柄时,请使用它 这将承担位图句柄的所有权(或销毁)

在另一个方向上,你的Delphi代码将从C++代码中获得一个并拥有所有权。通过为
TBitmap
实例的
Handle
属性赋值来实现这一点


详细信息因语言而异,但不管怎样,所有人都能处理
HBITMAP

,因此下面的代码很好:
过程更改位图(var BmpHandle:HBITMAP);var-Bmp:TBitmap;开始Bmp.Handle:=BmpHandle/*更改位图*/BmpHandle:=Bmp.ReleaseHandle;结束那个代码对我来说没什么意义<代码>Bmp
是一个从未实例化的本地文件。但是,忽略这一点,它在做什么?我想在DLL中获取位图,更改它并返回。我只是想确定数据类型是否正确。好的,我现在明白了。是的,可以。显然,您需要创建
Bmp
@汤姆在评论中不可能!