5

Delphiや他の言語(主にC ++)で使用するDLLプラグインを作成したいと思います。C ++およびDelphiに適した方法でビットマップを渡すにはどうすればよいですか?Delphi TBitmapへのハンドルになりますか?C ++プログラムは、WinApiを使用してデコードできるはずですよね?

4

1 に答える 1

10

TBitmapDelphiコードにのみ意味があるため、Delphiオブジェクトを渡すことはできません。渡す必要があるのはHBITMAP、Windowsビットマップへのハンドルです。

DelphiTBitmapクラスは、Windowsビットマップの単なるラッパーであり、HBITMAPハンドルを提供できます。注意する必要があるのは、それらのハンドルの所有権です。

Delphiをお持ちの場合は、のメソッドを呼び出すTBitmapことでを取得できます。によって返されるハンドルは、オブジェクトによって所有および管理されなくなりました。これはまさに必要なものです。そのハンドルをC++コードに渡し、それを所有者にします。そのハンドルを処分する責任があります。HBITMAPReleaseHandleTBitmapReleaseHandleTBitmap

のドキュメントは次のようにReleaseHandle述べています。

TBitmapオブジェクトがハンドルを認識しないように、ハンドルをビットマップに返します。

ReleaseHandleを使用して、ビットマップとビットマップハンドルの関連付けを解除します。ビットマップハンドルの所有権を引き継ぐ(または破棄する)ルーチンまたはオブジェクトにビットマップハンドルを与える必要がある場合に使用します。

他の方向では、DelphiコードはHBITMAPC ++コードからを受け取り、所有権を取得します。インスタンスのHandleプロパティに割り当てることによってそれを行います。TBitmap

詳細は言語ごとに異なりますが、何があっても、すべてがに対処できHBITMAPます。

于 2013-03-25T21:34:35.323 に答える