Tbitmap handle and dll call

Overview: I have a form with a 3rd party OCX that images chemical
structures in a proprietary metafile format. They provide a dll that
includes a function to convert the OCX image into a bitmap. I'm trying
to implement this call and place the bitmap into an image box on the
form. So far no luck. The 3rd party documentation is for Visual Basic so
I'm not sure I'm setting things up correctly in Delphi (version 3;
version 4 is on order). I'm suspicious of the bitmap handle/device
context and image sizing (need to convert twips to pixels?). Any
suggestions are appreciated.
TIA - Gary
-----------------
The VB help: This routine, available only as a C library call converts a
sketch into a bitmap that can be imaged in a picture control. In order
to get a bitmap image of a sketch, you must call a routine in a DLL
directly, due to a limitation of OLE automation.

The routines for accomplishing this conversion have slightly different
parameters on 16- and 32-bit Windows. To access this routine from 32-bit
Visual Basic, declare it as follows:

Declare Function isisGetBitmapFromSketch Lib "tobitmap.dll" (ByVal
hDestDC As Long, ByVal hSketch As Long, ByVal hydrogens As Long, ByVal
atomNumbers As Long, ByVal stdBond As Double, ByVal scaleType As Long,
ByVal rxnCenter As Long, ByVal nWidth As Long, ByVal nHeight As Long,
ByVal nWhite As Long) As Long

All units are in twips (1440 per inch) except for the value of the
stdBond length  which is always in inches. Both routines return an
HBITMAP which is the application's responsibility to free.  Both also
take a HDC (window's device context) which is your responsibility to
create and free. The 32 bit version will automatically create and free a
screen device context if you pass 0 for this parameter.

This routine is in TOBITMAP.DLL on 32-bit Windows and in ISISDLL.DLL on
16-bit Windows. Neither DLL needs to be registered, but ISISDLL.DLL must
be initialized and uninitialized.
-------------------
my implementation (function declaration in the interface section):
Tfunc = function( dc: Longint; hSketch: Longint; hydrogens : Longint;
atomNumbers : Longint;  stdBond : Double; scaleType : Longint;
rctCenters : Longint; BWidth : Longint;  BHeight : Longint;  white :
Longint) : Longint;

my procedure:
procedure TForm1.btnBitMapClick(Sender: TObject);
var
handle : longint;
ibitmap : longint;
ErrorMsg : string;
isisBitmap : TBitmap;
SkID : longint;

begin
handle := LoadLibrary('d:\isis2.2\TOBITMAP.DLL');
  if handle <> 0 then
  begin
  @func := GetProcAddress(handle, 'isisGetBitmapFromSketch');
  if @func <> nil then
    begin
    isisBitmap := TBitmap.Create;
    isisBitmap.Height := Image1.Height;
    isisBitmap.Width := Image1.Width;
//    isisBitmap.HandleType := (bmDIB);
    ibitmap := func(isisBitmap.handle, MdlBoxStructure.Data,
HYDROGENS_TERMINAL, ATOMNUMBERS_ALL, 0.5, SCALE_ASDRAWN, RXNCENTER_OFF,
image1.Width - 10, image1.Height - 10, 0);
    Image1.picture.bitmap.assign(isisBitmap);
    Image1.Refresh;
    Image1.Show;
    end;
  FreeLibrary(handle);
  isisBitmap.free;
  end;
end;