How to Make a Push Button with a Bitmap in Visual Basic

Last reviewed: December 8, 1995
Article ID: Q140884
The information in this article applies to:

- Professional and Enterprise Editions of Microsoft Visual Basic,

  16-bit only, for Windows, version 4.0

SUMMARY

Command buttons in Visual Basic for Windows are limited to a single line of text and one background color (gray). The 3D command button shipped in the Professional Editions of Visual Basic version 2.0, 3.0 and 4.0 for Windows does have the capability of displaying bitmaps within a command button in Visual Basic for Windows. However, there is no way to alter the background or border colors to change its appearance. You can create the look and feel of a command button by using a picture control and manipulating the DrawMode in conjunction with the Line method. Using a picture control also allows you to display the "command button" in any color with multiple lines of caption text.

MORE INFORMATION

The technique (demonstrated further below) simulates the effect of pressing a command button by using the Line method with the BF option (Box Fill) in invert mode each time a MouseUp or MouseDown event occurs for the picture control. To add multiline text to the "button," either print to the picture box or add the text permanently to the bitmap.

The steps to create a customized "command button" are as follows:

  1. Start Visual Basic for Windows, or choose New Project from the File menu (press ALT, F, N) if Visual Basic for Windows is already running. Form1 will be created by default.

  2. Put a picture control (Picture1) on Form1.

  3. Set the properties for Picture1 as given in the chart below:

        Property         Value
        --------         -----
        AutoRedraw       True
        AutoSize         True
        BorderStyle      0-None
        DrawMode         6-Invert
    
    

  4. Assign the Picture property of Picture1 to the bitmap of your choice. For example, choose ARW01DN.ICO from the ARROWS subdirectory of the ICONS directory shipped with Visual Basic for Windows. This is a good example of a bitmap with a three dimensional appearance.

  5. Enter the following code in the Picture1_DblClick event procedure of Picture1:

    Private Sub Picture1_DblClick ()

            Picture1.Line (0, 0)-(Picture1.width, Picture1.height), , BF
        End Sub
    
        NOTE: This code is necessary to avoid getting the bitmap stuck in
        an inverted state because of Mouse messages being processed out of
        order or from piling up due to fast clicking.
    
    

  6. Enter the following code in the Picture1_MouseDown event procedure of Picture1:

    Private Sub Picture1_MouseDown (Button As Integer, Shift As Integer,

                              X As Single, Y As Single)  ' Append to above line
            Picture1.Line (0, 0)-(Picture1.width, Picture1.height), , BF
        End Sub
    
    

  7. Enter the following code in the Picture1_MouseUp event procedure of Picture1:

    Private Sub Picture1_MouseUp (Button As Integer, Shift As Integer,

                              X As Single, Y As Single) ' Append to above line.
            Picture1.Line (0, 0)-(Picture1.width, Picture1.height), , BF
        End Sub
    
    

  8. Add the following code to the Picture1_KeyUp event procedure for Picture1:

    Private Sub Picture1_KeyUp (KeyCode As Integer, Shift As Integer)

            '* Check to see if the ENTER key was pressed.  If so, restore
            '* the picture image.
            If KeyCode = 13 Then
              Picture1.Line (0, 0)-(Picture1.width, Picture1.height), , BF
            End If
        End Sub
    
    

  9. Add the following code to the Picture1_KeyDown event procedure for Picture1:

    Private Sub Picture1_KeyDown (KeyCode As Integer, Shift As Integer)

            '* Check to see if the ENTER key was pressed.  If so, invert
            '* the picture image.
            If KeyCode = 13 Then
              Picture1.Line (0, 0)-(Picture1.width, Picture1.height), , BF
            End If
        End Sub
    
    

  10. From the Run menu, choose Start. Click the picture box. The image of the picture should be inverted while the mouse button is down, giving the visual effect of a button press.


Additional reference words: 1.00 2.00 3.00 4.00 vb4win vb416
KBCategory: kbprg kbcode
KBSubcategory: PrgCtrlsStd


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: December 8, 1995
© 1998 Microsoft Corporation. All rights reserved. Terms of Use.