[Back to WIN-OS2 SWAG index] [Back to Main SWAG index] [Original]

    {
    MM> Thanks alot but I was woundering if you had the complete code USES
    MM> and every thing no blanks. Becuase I am not to good at graphics. ---

    }
    UNIT BMPWin;

    INTERFACE

    USES
      WinProcs, WinTypes, Objects, OWindows;

    {$R MYBMP.RES} (* Change as appropriate *)

    TYPE
      pBMPWindow = ^tBMPWindow;
      tBMPWindow = OBJECT(tWindow)
        PRIVATE
          vBitmap : hBitmap;
          vBitSize : tBitmap;
        PUBLIC
          CONSTRUCTOR Init(aParent : pWindowsObject; aBitmapName : pChar);
          DESTRUCTOR Done; VIRTUAL;
          PROCEDURE SetupWindow; VIRTUAL;
          PROCEDURE Paint(vDC : hDC; VAR vPS : tPaintStruct); VIRTUAL;
      END;

    IMPLEMENTATION

    CONSTRUCTOR tBMPWindow.Init(aParent : pWindowsObject; aBitmapName :
    pChar);
      BEGIN
        INHERITED Init(aParent, NIL);
        Attr.Style := ws_Child OR ws_Visible;
        vBitmap := LoadBitmap(hInstance, aBitmapName);
        IF vBitmap = 0 THEN
          BEGIN
            Status := em_InvalidWindow;
            Fail;
          END;
        GetObject(vBitmap, SizeOf(vBitSize), @vBitSize);
      END;

    DESTRUCTOR tBMPWindow.Done;
      BEGIN
        DeleteObject(vBitmap);
        INHERITED Done;
      END;

    PROCEDURE tBMPWindow.SetupWindow;
      BEGIN
        INHERITED SetupWindow;
        SetWindowPos(hWindow, 0, 0, 0, vBitSize.bmWidth, vBitSize.bmHeight,
                     swp_NoMove OR swp_NoZOrder OR swp_NoActivate OR
                     swp_NoRedraw);
      END;

    PROCEDURE tBMPWindow.Paint(vDC : hDC; VAR vPS : tPaintStruct);
      VAR
        vRect : tRect;

      PROCEDURE DrawBitmap;
        VAR
          vMemDC : hDC;
          vOldBMP : hBitmap;

        BEGIN
          vMemDC := CreateCompatibleDC(vDC);
          vOldBMP := SelectObject(vMemDC, vBitmap);
          BitBlt(vDC, 0, 0, Attr.W, Attr.H, vMemDC, 0, 0, srcCopy);
          SelectObject(vMemDC, vOldBMP);
          DeleteDC(vMemDC);
        END;

      BEGIN
        SaveDC(vDC);
        DrawBitmap;
        RestoreDC(vDC, -1);
      END;
    END.

[Back to WIN-OS2 SWAG index] [Back to Main SWAG index] [Original]