How To Create a Setup-Like Status Bar in Visual Basic

Article translations Article translations
Article ID: 147809 - View products that this article applies to.
This article was previously published under Q147809
This article has been archived. It is offered "as is" and will no longer be updated.
Expand all | Collapse all

On This Page

SUMMARY

Many applications use a status bar to display the progress of an installation or other lengthy process. Often the percent completed is printed in the middle of the bar and it changes color as the status bar passes over it. This article illustrates how to achieve this effect using Visual Basic for Windows. As a note, the professional and enterprise edition contain a progress bar control that could be used instead. For Win16 applications, the sample calldlls in vb\samples\calldlls uses shape controls to achieve the same effect.

MORE INFORMATION

The simplest way to specify the range of the status bar is to determine what the zero-based range will be and specify that value as the ScaleWidth of the horizontal scroll bar. Then you don't have to scale the data for each new sample.

Changing the color of the percentage displayed within the picture box is done by specifying the DrawMode as Not XOR Pen with a compatible background. When the bar is drawn, an exclusive OR is performed on each pixel. If the pixel is red, it is made white and vice versa. The text must be placed first because Print does not support DrawMode. The following program demonstrates how to display a red status bar with a red or white text message centered in it. Colors other than red are specified by changing the ForeColor property of the Picture Box Control.

Step-by-Step Example

  1. Start a new project in Visual Basic. Form1 is created by default.
  2. Add a picture box (Picture1) and a command button (Command1) to the form.
  3. Add the following code to the general declarations section of Form1:
    Dim tenth As Long
    
    #If Win32 Then
    Private Declare Function BitBlt Lib "gdi32" _
    (ByVal hDestDC As Long, ByVal x As Long, ByVal y As Long, _
    ByVal nWidth As Long, ByVal nHeight As Long, _
    ByVal hSrcDC As Long, ByVal xSrc As Long, ByVal ySrc As Long, _
    ByVal dwRop As Long) As Long
    #Else
    Private Declare Function BitBlt Lib "GDI" (ByVal hDestDC As _
    Integer, ByVal x As Integer, ByVal y As Integer, ByVal nWidth _
    As Integer, ByVal nHeight As Integer, ByVal hSrcDC As Integer, _
    ByVal xSrc As Integer, ByVal ySrc As Integer, ByVal dwRop As _
    Long) As Integer
    #End If
    
    Sub UpdateStatus(FileBytes As Long)
    '--------------------------------------------------------------------
    ' Update the Picture1 status bar
    '--------------------------------------------------------------------
        Static progress As Long
        Dim r As Long
        Const SRCCOPY = &HCC0020
        Dim Txt$
        progress = progress + FileBytes
        If progress > Picture1.ScaleWidth Then
            progress = Picture1.ScaleWidth
        End If
        Txt$ = Format$(CLng((progress / Picture1.ScaleWidth) * 100)) + "%"
        Picture1.Cls
        Picture1.CurrentX = _
        (Picture1.ScaleWidth - Picture1.TextWidth(Txt$)) \ 2
        Picture1.CurrentY = _
        (Picture1.ScaleHeight - Picture1.TextHeight(Txt$)) \ 2
        Picture1.Print Txt$
        Picture1.Line (0, 0)-(progress, Picture1.ScaleHeight), _
        Picture1.ForeColor, BF
        r = BitBlt(Picture1.hDC, 0, 0, Picture1.ScaleWidth, _
            Picture1.ScaleHeight, Picture1.hDC, 0, 0, SRCCOPY)
    End Sub
    
    Private Sub Command1_Click()
        Picture1.ScaleWidth = 109
        tenth = 10
        For i = 1 To 11
            Call UpdateStatus(tenth)
            x = Timer
            While Timer < x + 0.75
                DoEvents
            Wend
        Next
    End Sub
    
    Private Sub Form_Load()
        Picture1.FontBold = True
        Picture1.AutoRedraw = True
        Picture1.BackColor = vbWhite
        Picture1.DrawMode = 10
        Picture1.FillStyle = 0
        Picture1.ForeColor = vbBlue
    End Sub
    						
  4. Select F5 to run the program, and then click Command1.

REFERENCES

Visual Basic Setup Wizard file SETUP1.BAS.

Properties

Article ID: 147809 - Last Review: February 24, 2014 - Revision: 2.2
APPLIES TO
  • Microsoft Visual Basic 5.0 Learning Edition
  • Microsoft Visual Basic 6.0 Learning Edition
  • Microsoft Visual Basic 5.0 Professional Edition
  • Microsoft Visual Basic 6.0 Professional Edition
  • Microsoft Visual Basic 5.0 Enterprise Edition
  • Microsoft Visual Basic 6.0 Enterprise Edition
  • Microsoft Visual Basic 4.0 Standard Edition
  • Microsoft Visual Basic 4.0 Professional Edition
  • Microsoft Visual Basic 4.0 Enterprise Edition
Keywords: 
kbnosurvey kbarchive kbhowto kbapi KB147809

Give Feedback

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com