[Back to DELPHI SWAG index] [Back to Main SWAG index] [Original]

    There are a couple of problems with using WinG and the Delphi IDE.  First,
    WinG has some sort of problem with ToolHelp that causes GPF's all the time.
    Second, WinG apps created with Delphi don't always seem to load the WING.DLL
    file correctly (!) so the programs will not run.

    Using LoadLibrary to access WinG seems to alleviate both problems.  Here is
    my WinG import unit:

    unit Newwing;  {WinG import unit for Borland Pascal}
    interface
    uses winTypes, winProcs;

    function InitWinG : Boolean;
    function DeInitWinG : Boolean;

    type
      TWinGDither = (winG4x4Dispersed,winG8x8Dispersed,winG4x4Clustered);
      TWinGCreateDC =
        function:hDC;
      TWinGRecommendDIBFormat =
        function(pFormat:pBitmapInfo):boolean;
      TWinGCreateBitmap =
        function(WinGDC:hDC; pHeader:pBitmapInfo; var ppBits:pointer):hBitmap;
      TWinGGetDIBPointer =
        function(WinGBitmap:hBitmap;pHeader:pBitmapInfo):pointer;
      TWinGGetDIBColorTable =
        function(WinGDC:hDC; StartIndex, NumberOfEntries:word;pColors:pointer):word;
      TWinGSetDIBColorTable =
        function(WinGDC:hDC; StartIndex, NumberOfEntries:word;pColors:pointer):word;
      TWinGCreateHalftonePalette =
        function:hPalette;
      TWinGCreateHalftoneBrush =
        function(context:hDC; crColor:tColorRef;ditherType:tWinGDither):hBrush;
      TWinGBitBlt =
        function(hdcDst:hDC; nXOriginDst, nYOriginDst, nWidthDst,nHeightDst:integer;
                 hdcSrc:hDC; nXOriginSrc, nYOriginSrc:integer):boolean;
      TWinGStretchBlt =
        function(hdcDst:hDC; nXOriginDst, nYOriginDst, nWidthDst,nHeightDst:integer;
                 hdcSrc:hDC; nXOriginSrc, nYOriginSrc, nWidthSrc,nHeightSrc:integer)
                 :boolean;

    var
      WinGCreateDC : TWinGCreateDC;
      WinGRecommendDIBFormat: TWinGRecommendDIBFormat;
      WinGCreateBitmap: TWinGCreateBitmap;
      WinGGetDIBPointer: TWinGGetDIBPointer;
      WinGGetDIBColorTable: TWinGGetDIBColorTable;
      WinGSetDIBColorTable: TWinGSetDIBColorTable;
      WinGCreateHalftonePalette: TWinGCreateHalftonePalette;
      WinGCreateHalftoneBrush: TWinGCreateHalftoneBrush;
      WinGBitBlt: TWinGBitBlt;
      WinGStretchBlt: TWinGStretchBlt;

    implementation

    Const
      WinGName : String = 'WING.DLL' + chr(0);
      WinGH : THandle = 0;

    Function InitWinG : Boolean;
      Begin
        WinGH := LoadLibrary(@WinGName[1]);
        If WinGH < HINSTANCE_ERROR
          Then
            Begin
              InitWinG := False;
              Exit;
            End;
        @WinGCreateDC := GetProcAddress(WinGH,Pointer(1001));
        @WinGRecommendDIBFormat:= GetProcAddress(WinGH,Pointer(1002));
        @WinGCreateBitmap:= GetProcAddress(WinGH,Pointer(1003));
        @WinGGetDIBPointer:= GetProcAddress(WinGH,Pointer(1004));
        @WinGGetDIBColorTable:= GetProcAddress(WinGH,Pointer(1005));
        @WinGSetDIBColorTable:= GetProcAddress(WinGH,Pointer(1006));
        @WinGCreateHalftonePalette:= GetProcAddress(WinGH,Pointer(1007));
        @WinGCreateHalftoneBrush:= GetProcAddress(WinGH,Pointer(1008));
        @WinGStretchBlt:= GetProcAddress(WinGH,Pointer(1009));
        @WinGBitBlt:= GetProcAddress(WinGH,Pointer(1010));

        InitWinG := True;
      End;

    Function DeInitWinG : Boolean;
      Begin
        FreeLibrary(WinGH);
        DeInitWinG := True;
      End;

    End.

[Back to DELPHI SWAG index] [Back to Main SWAG index] [Original]