ID Number: Q72679
1.00
WINDOWS
Summary:
Debug.Print used within the MouseMove event procedure of a form or
control causes a MouseMove event. If the mouse cursor is located
within the form or control, an endless stream of output to the
Immediate Window will occur. This behavior occurs for a program run in
the Visual Basic development environment. An .EXE program does not
utilize the Immediate Window and the Debug object so this behavior
does not apply to a .EXE program. The problem does not occur if a
Print method is issued to any other form or control in the program.
This is not a problem with Visual Basic, but rather the nature of the
Microsoft Windows operating environment.
This information applies to Microsoft Visual Basic programming system
version 1.00 for Windows.
More Information:
If Debug.Print is used within the MouseMove event procedure of a form
or control, an endless stream of output is sent to the Immediate
Window. This occurs whenever the mouse cursor is within the form or
control. This behavior occurs because the Debug.Print statement causes
the focus to change briefly to the Immediate Window. When the focus
returns to the form or control, Windows generates a MouseMove event
that is processed by Visual Basic. There is no way for Visual Basic to
suppress MouseMove events that are generated by Windows. The easiest
way to overcome this behavior is to send debug output to another form
or control.
To duplicate this behavior, create a picture control (Picture1) within
the default form (Form1). Add the following code segment to the
MouseMove event procedure of Picture1:
Sub Picture1_MouseMove (Button As Integer, Shift As Integer,
X As Single, Y As Single)
' You must write the above Sub statement on just one line.
Static i%
i% = i% + 1
Debug.Print i%
End Sub
If you want output to be sent only when the mouse is moved, then all
Debug.Print statements within the MouseMove event procedure should be
changed to Print methods to other forms or controls. Below is a
description of how to modify the example above such that output is
produced only when the mouse is moved.
Add another form (Form2) to the project by selecting New Form from the
File menu (ALT F+F). Change the Debug.Print statement in the MouseMove
event procedure for Picture1 to Form2.Print. Below is a copy of the
above sample modified to send output to another form.
Sub Picture1_MouseMove (Button As Integer, Shift As Integer,
X As Single, Y As Single)
' You must write the above Sub statement on just one line.
Static i%
i% = i% + 1
Form2.Print i%
End Sub
In the example above, all output that scrolls off the form will be
lost. A more sophisticated routine will be required to keep track of
all output to the form. Such a routine is beyond the scope of this
article.