VB3 How to Use Windows BitBlt Function in VB Application

Last reviewed: January 9, 1997
Article ID: Q71104
The information in this article applies to:

- Standard and Professional Editions of Microsoft Visual Basic for

  Windows, versions 2.0 and 3.0
- Microsoft Visual Basic programming system for Windows, version 1.0

SUMMARY

Windows GDI.EXE has a function called BitBlt that will move the source device given by the hSrcDC parameter to the destination device given by the hDestDC parameter. This article explains in detail the arguments of the Windows BitBlt function call.

MORE INFORMATION

This information is included with the Help file provided with Microsoft Professional Toolkit for Visual Basic version 1.0, Microsoft Visual Basic version 2.0, and Microsoft Visual Basic version 3.0.

To use BitBlt within a Visual Basic application, you must Declare the BitBlt function in one of these places:

  • Global module if using Visual Basic version 1.0.
  • Declaration section of any code module if using Visual Basic version 2.0 or higher.
  • Declaration section of a code window for the form.

Use the following Declare statement to declare the Function. Enter the entire Declare statement on one, single line:

Declare Function BitBlt Lib "GDI" (ByVal hDestDC%, ByVal X%, ByVal Y%,
   ByVal nWidth%, ByVal nHeight%, ByVal hSrcDC%, ByVal XSrc%, ByVal YSrc%,
   ByVal dwRop&) As Integer

The following defines each of the formal parameters used in the Declare:

   Parameter   Definition
   ----------------------------------------------------------------------
   hDestDC     Specifies the device context that is to receive the bitmap.

   X,Y         Specifies the logical x-coordinate and y-coordinate of the
               upper-left corner of the destination rectangle.

   nWidth      Specifies the width (in logical units) of the destination
               rectangle and the source bitmap.

   nHeight     Specifies the height (in logical units) of the destination
               rectangle and the source bitmap.

   hSrcDC     Identifies the device context from which the bitmap will be
              copied. It must be NULL(zero) if the dwRop& parameter
              specifies a raster operation that does not include a source.

   XSrc       Specifies the logical x-coordinate and the y-coordinate of
              the upper-left corner of the source bitmap.

   dwRop      Specifies the raster operation to be performed as defined
              below.

The following Raster operations are defined using the predefined constants found in the WINDOWS.H file supplied with the Microsoft Windows Software Development Kit (SDK). The value in the parentheses () is the value to assign to the dwRop& variable.

   Code/Value (hex)     Description
   ----------------------------------------------------------------------
   BLACKNESS (42)       Turn output black.

   DSINVERT(550009)     Inverts the destination bitmap.

   MERGECOPY(C000CA)    Combines the pattern and the source bitmap using
                        the Boolean AND operation.

   MERGEPAINT(BB0226)    Combines the inverted source bitmap with the
                         destination bitmap using the Boolean OR operator.

   NOTSRCCOPY(330008)    Copies the inverted source bitmap to the
                         destination.

   NOTSRCERASE(1100A6)   Inverts the result of combining the destination
                         and source bitmap using the Boolean OR operator.

   PATCOPY(F00021)       Copies the pattern to the destination bitmap.

   PATINVERT(5A0049)     Combines the destination bitmap with the
                         pattern using the Boolean XOR operator.

   PATPAINT(FB0A09)      Combines the inverted source bitmap with the
                         pattern using the Boolean OR operator. Combines
                         the result of this operation with the destination
                         bitmap using the Boolean OR operator.

   SRCAND(8800C6)        Combines pixels of the destination and source
                         bitmap using the Boolean AND operator.

   SRCCOPY(CC0020)       Copies the source bitmap to destination bitmap.

   SRCERASE(4400328)     Inverts the destination bitmap and combines the
                         results with the source bitmap using the Boolean
                         AND operator.

   SRCINVERT(660046)     Combines pixels of the destination and source
                         bitmap using the Boolean XOR operator.

   SRCPAINT(EE0086)      Combines pixels of the destination and source
                         bitmap using the Boolean OR operator.

   WHITENESS(FF0062)     Turns all output white.

Step-by-Step Example

Here is an example showing how to copy the contents of a picture control to the contents of another picture control.

  1. Define a form (Form1) and place two picture controls (Picture1 and Picture2) on Form1.

  2. Display some graphics on Picture1 by loading from a picture file or by pasting from the clipboard at design time. You can load a picture from a file as follows:

        - Select Picture from the Properties list box and click the arrow at
    
the
      right of the Settings box.
    - Then select the desired picture file such as a .BMP or .ICO file
      supplied with Microsoft Windows from the dialog box.

  • Add the following code to the Form_Click procedure:

       Sub Form_Click ()
    
          ' Assign information of the destination bitmap. Note that Bitblt
          ' requires coordinates in pixels.
          Const PIXEL = 3
          Picture1.ScaleMode = PIXEL
          Picture2.ScaleMode = PIXEL
          hDestDC% = Picture2.hDC
          X% = 0: Y% = 0
          nWidth% = Picture2.ScaleWidth
          nHeight% = Picture2.ScaleHeight
    
          ' Assign information of the source bitmap.
          hSrcDC% = Picture1.hDC
          XSrc% = 0: YSrc% = 0
    
          ' Assign the SRCCOPY constant to the Raster operation.
          dwRop& = &HCC0020
    
          Suc% = BitBlt(hDestDC%, X%, Y%, nWidth%, nHeight%,_
          hSrcDC%, XSrc%, YSrc%, dwRop&)
       End Sub
    
    

  • Run the program.

    Click the form. The contents of the first picture will be displayed on the the second picture.


  • Additional reference words: 1.00 2.00 3.00 vb3only
    KBCategory: kbgraphic kbprg kbcode
    KBSubcategory: APrgGrap



    THE INFORMATION PROVIDED IN THE MICROSOFT KNOWLEDGE BASE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND. MICROSOFT DISCLAIMS ALL WARRANTIES, EITHER EXPRESS OR IMPLIED, INCLUDING THE WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL MICROSOFT CORPORATION OR ITS SUPPLIERS BE LIABLE FOR ANY DAMAGES WHATSOEVER INCLUDING DIRECT, INDIRECT, INCIDENTAL, CONSEQUENTIAL, LOSS OF BUSINESS PROFITS OR SPECIAL DAMAGES, EVEN IF MICROSOFT CORPORATION OR ITS SUPPLIERS HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. SOME STATES DO NOT ALLOW THE EXCLUSION OR LIMITATION OF LIABILITY FOR CONSEQUENTIAL OR INCIDENTAL DAMAGES SO THE FOREGOING LIMITATION MAY NOT APPLY.

    Last reviewed: January 9, 1997
    © 1998 Microsoft Corporation. All rights reserved. Terms of Use.