Delphi 如何在C++;德尔菲呢?
我想创建一个DLL插件,用于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
如何在C++和Delphi友好的方式下传递位图?它能只是Delphi TBitmap的一个句柄吗?C++程序应该能够使用WiAPI解码它,对吗?< P>你不能通过Delphi <代码> tBMPMAP>/COD>对象,因为这只对Delphi代码有意义。您需要传递的是一个,一个Windows位图的句柄 Delphi
TBitmap
类只是Windows位图的包装器,可以提供HBITMAP
句柄。你需要注意的是这些手柄的所有权
如果您有一个DelphiTBitmap
,您可以通过调用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
@汤姆在评论中不可能!