{
From: bobs@dragons.nest.nl (Bob Swart)

> For what it's worth, I took a look at it and determined that it is
> not useful for Pascal.  One of the main reasons was that the DLL
> used the C calling convention.

Well, I hate to disagree with you, but it can be done. In fact, it has been
done. Mike Scott has written an interface unit, which is included below. The
unit can also be downloaded from CompuServe (BPASCAL forum) and will be
included on the disk with The Pascal Magazine #5 which includes some articles
on using WinG from Borland Pascal.

Anyway, here's the import unit from Mike (I think a newer version will be on
The Pascal Magazine disk):

{*******************************************************}
{                                                       }
{       WinG Import Unit for Borland Pascal             }
{                                                       }
{       Written by Mike Scott, CIS 100140,2420          }
{       Preliminary version 9th July 1994               }
{                                                       }
{*******************************************************}

unit WinG ;

interface

uses WinTypes ;

{ WinG Types }

type
  PPointer = ^pointer ;
  PRGBQuad = ^TRGBQuad ;
  WING_DITHER_TYPE = word ;

const
  WING_DISPERSED_4x4 = 0 ;
  WING_DISPERSED_8x8 = 1 ;
  WING_CLUSTERED_4x4 = 2 ;

{ WinG DC's & WinG Bitmaps }

function  WinGCreateDC : HDC ;
function  WinGCreateBitmap( hWinGDC : HDC ;
                            pHeader : PBitmapInfo ;
                            ppBits  : PPointer ) : HBitmap ;
function  WinGGetDIBPointer( hWinGBitmap : HBitmap ;
                             pHeader     : PBitmapInfo ) : pointer ;
function  WinGRecommendDIBFormat( pHeader : PBitmapInfo ) : Bool ;
function  WinGGetDIBColorTable( hWinGDC         : HDC ;
                                StartIndex      : word ;
                                NumberOfEntries : word ;
                                pColors         : PRGBQuad ) : word ;
function  WinGSetDIBColorTable( hWinGDC         : HDC ;
                                StartIndex      : word ;
                                NumberOfEntries : word ;
                                pColors         : PRGBQuad ) : word ;

{ Blts }

function  WinGBitBlt( hdcDest      : HDC ;
                      nXOriginDest : integer ;
                      nYOriginDest : integer ;
                      nWidthDest   : integer ;
                      nHeightDest  : integer ;
                      hdcSrc       : HDC ;
                      nXOriginSrc  : integer ;
                      nYOriginSrc  : integer ) : Bool ;
function  WinGStretchBlt( hdcDest      : HDC ;
                          nXOriginDest : integer ;
                          nYOriginDest : integer ;
                          nWidthDest   : integer ;
                          nHeightDest  : integer ;
                          hdcSrc       : HDC ;
                          nXOriginSrc  : integer ;
                          nYOriginSrc  : integer ;
                          nWidthSrc    : integer ;
                          nHeightSrc   : integer ) : Bool ;

{ Halftoning }

function  WinGCreateHalftoneBrush( DC         : HDC ;
                                   Color      : TColorRef ;
                                   DitherType : WING_DITHER_TYPE ) : HBrush ;
function  WinGCreateHalftonePalette : HPalette ;


implementation

function  WinGCreateDC ;              external 'WinG' index 1001 ;
function  WinGCreateBitmap ;          external 'WinG' index 1003 ;
function  WinGGetDIBPointer ;         external 'WinG' index 1004 ;
function  WinGRecommendDIBFormat ;    external 'WinG' index 1002 ;
function  WinGGetDIBColorTable ;      external 'WinG' index 1005 ;
function  WinGSetDIBColorTable ;      external 'WinG' index 1006 ;
function  WinGBitBlt ;                external 'WinG' index 1010 ;
function  WinGStretchBlt ;            external 'WinG' index 1009 ;
function  WinGCreateHalftoneBrush ;   external 'WinG' index 1008 ;
function  WinGCreateHalftonePalette ; external 'WinG' index 1007 ;

end.

