Browse DevX
Sign up for e-mail newsletters from DevX

Tip of the Day
Language: VB5,VB6
Expertise: Intermediate
Jun 17, 1999



Building the Right Environment to Support AI, Machine Learning and Deep Learning

Correctly restore mouse cursor

When you write lengthy procedures, it is a good habit to change the mouse cursor to an hourglass, and restore it to the original shape when the procedure exits. However, this cursor tracking may be rather difficult when the procedure has multiple exit points, or when it can exit abruptly because of an unanticipated error. An alternative, better approach is to use a very simple class that changes the mouse cursor to your desired shape, and automatically restores it when the object reference is destroyed:

' the CMouseCursor class
Private oldMousePointer As Variant

' enforce a new cursor
Sub SetCursor(Optional NewCursor As MousePointerConstants = vbHourGlass)
    If IsEmpty(oldMousePointer) Then
        ' save the original cursor, but only the first
        ' time this method is invoked in this instance
        oldMousePointer = Screen.MousePointer
    End If
    Screen.MousePointer = NewCursor
End Sub

Private Sub Class_Terminate()
    ' restore original mouse cursor, if it changed
    If Not IsEmpty(oldMousePointer) Then
        Screen.MousePointer = oldMousePointer
    End If
End Sub
Note that the class stores the mouse cursor only the first time the SetCursor is invoked; if you omit any argument when calling the method, the cursor is changed to an hourglass. Here is an example of how this class can be used:

Sub MyRoutine()
    Dim mouse As New CMouseCursor
    ' save current cursor, enforce a new one
    mouse.SetCursor vbArrowQuestion
    ' ...
    ' change to an hourglass
    ' ...
    ' the original mouse cursor is automatically
    ' restored when this procedure is exited
End Sub
Francesco Balena
Comment and Contribute






(Maximum characters: 1200). You have 1200 characters left.



Thanks for your registration, follow us on our social networks to keep up-to-date