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

ID Number: Q78478

1.00

WINDOWS

Summary:

Command buttons in Visual Basic are limited to a single line of text

and one background color (gray). Visual Basic offers no provision for

changing colors or displaying bitmaps within a command button to alter

its appearance. However, by using a picture control and manipulating

the DrawMode in conjunction with the Line method, you can create the

look and feel of a command button. Using a picture control also allows

you to display the "command button" in any color with multiple lines

of caption text.

This information applies to Microsoft Visual Basic programming system

version 1.0 for Windows.

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, or choose New Project from the File menu (ALT,

F, N) if Visual Basic 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.

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:

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:

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:

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:

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:

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 on 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