DLL传递图像句柄异常 ( 积分: 200 )

  • 主题发起人 主题发起人 ztszts
  • 开始时间 开始时间
Z

ztszts

Unregistered / Unconfirmed
GUEST, unregistred user!
在VB中将一个PictureBox的hWnd传递给一个DLL,DLL返回一个图像到PictureBox<br>我在delphi中使用的是TImage,传递的是Image1.Picture.Bitmap.Handle,结果出现异常<br>请问我在DELPHI中应该传递什么参数,用那个控件比较好
 
最好把你的核心代码贴出来看看&nbsp;这样很抽象呀
 
VB中的声明:<br>Public&nbsp;Declare&nbsp;Function&nbsp;GetImage&nbsp;Lib&nbsp;&quot;DataLib&quot;&nbsp;(ByVal&nbsp;hDispWnd&nbsp;As&nbsp;Long)&nbsp;As&nbsp;Long<br>VB中的调用,pic1是一个PictureBox控件:<br>dwRet&nbsp;=&nbsp;GetImage(pic1.hWnd)<br>--------<br>上面执行完之后,窗体的pic就显示一个dll写入的图片,我要把代码改到delphi里<br>我是这样做的:<br>声明:<br>var<br>&nbsp;&nbsp;GetImage:function(hDispWnd:&nbsp;HWND):&nbsp;DLLEXPORT&nbsp;{$IFDEF&nbsp;WIN32}&nbsp;stdcall&nbsp;{$ENDIF};<br>调用,Image1是一个TImage:<br>&nbsp;&nbsp;dwRet:=GetImage(Image1.Picture.Bitmap.Handle);<br>在delphi里执行报异常
 
我试了一下&nbsp;Image1.Picture.Bitmap.Handle取出来的值是0啊!!
 
用GetDC(Image1.Picture.Bitmap.Handle)这样试一下
 
Image1.Picture.Bitmap.Canvas.Handle;<br>这样也取的出
 
谢谢,我用GetDC(Image1.Picture.Bitmap.Handle)这个试了也不行<br>0是它的初始值,我调用的那个DLL会向这个句柄里写入一个图片,vb里我看了效果没有问题<br>Image1.Picture.Bitmap.Canvas.Handle;这个也不行
 
我已经在Image1里先存了一张图片啦&nbsp;&nbsp;但是handle还是0<br>是0说明根本没有取到呀
 
不是啊,我在Image1里存了一张图片,handle不是0的,你再看看
 
我知道怎么会事了&nbsp;&nbsp;<br>存张jpg的图片handle就是0<br>存bmp的图片就可以取的到
 
GetImage的函数功能是什么?<br>你出现的异常是什么样的??
 
JPEG是不可以用Handle的。<br>所以要先将TJpeg的图片变成BMP,然后传递BMP。<br>肯定可以。(因为我就是这样做的)
 
后退
顶部