DELPHI调用C++函数并显示图片的有关问题

网友分享于:2015-09-23 16:51 发表在 Delphi
DELPHI调用C++函数并显示图片的问题
函 数 名:lmc1_GetPrevBitmap
目    的:得到当前数据库里的所有对象的预览图像。
语  法:Cbitmap* lmc1_GetPrevBitmap(HWND hwnd,int nBMPWIDTH,int nBMPHEIGHT);

hwnd需要显示当前图像的窗口句柄
nBMPWIDTH 需要生成的图像的像素宽度
nBMPHEIGHT需要生成的图像的像素高度

描    述:在程序中调用lmc1_GetPrevBitmap得到当前数据库里的所有对象的预览图像,可以用于更新界面显示。
返 回 值:如果成功会返回图像,返回值为空表示失败.

以上是一个C++的DLL文件的函数,请问如何在Delphi里调用?如何能把图片显示出来?

函数返回的类型是Cbitmap*,对应的Delphi类型是Tbitmap还是Hbitmap?

function lmc1_GetPrevBitmap(hwnd:HWND;nBMPWIDTH:integer;nBMPHEIGHT:integer):Tbitmap;    
还是
function lmc1_GetPrevBitmap(hwnd:HWND;nBMPWIDTH:integer;nBMPHEIGHT:integer):Hbitmap;   ?

加入返回Hbitmap,这个函数的返回值该怎么显示出来(或存储到磁盘上)?

------解决思路----------------------
调用动态库的一般步骤可以参考下面的代码:

var
  hDll: THandle;
  SetScreenParameter: function(nScreenNO, nWidth, nHeight: Integer;pFileName: pChar):Integer; stdcall;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
  hDll := LoadLibrary('DLL.dll');   //你的DLL文件名
  if hDll < 32 then exit;           //如果Dll无法加载则跳出
  SetScreenParameter := GetProcAddress(hDll, 'SetScreenParameter');
  //调用的时候直接使用SetScreenParameter即可
end;



HBITMAP  是句柄
BITMAP     是实例
至于是TBitmap还是HBitmap,楼主描述的函数功能是:得到当前数据库里的所有对象的预览图像,应该不止一个,但是HBITMAP 和BITMAP 好像都表示单个对象,并不具备数组的功能,楼主应该考虑使用其他的方法。
------解决思路----------------------
最好让这个函数返回HBITMAP句柄吧,你返回C++中的Cbitmap结构的对象,Delphi是用不了的
如果返回的是句柄,可以直接用TBitmap.Handle赋值
------解决思路----------------------
返回的类型要能识别,其他的类型VC++的那个bitmap肯定识别不了吧
------解决思路----------------------
见你的另一帖。

------解决思路----------------------
C++函数返回的值(对象),要适合Delphi的标准。
推荐分类: Windows Windows2000 Windows xp Windows7 Windows Phone Windows Server Office VBA VC/MFC Delphi
推荐标签: php websocket input navicat finereport
相关文章
最新发表
热门推荐