Microsoft KB Archive/149275

= FIX: MouseMove Button Is Incorrect with ListView MultiSelect =

Article ID: 149275

Article Last Modified on 7/13/2004

-

APPLIES TO


 * Microsoft Visual Basic 4.0 Standard Edition
 * Microsoft Visual Basic 4.0 Professional Edition
 * Microsoft Visual Basic 4.0 32-Bit Enterprise Edition
 * Microsoft Visual Basic 5.0 Learning Edition
 * Microsoft Visual Basic 5.0 Professional Edition
 * Microsoft Visual Basic 5.0 Enterprise Edition

-



This article was previously published under Q149275



SYMPTOMS
The Button argument of the ListView's MouseMove event may not always correctly reflect the most current mouse button status. This can occur if the MultiSelect property of the ListView control is set to True. The Button argument of the MouseMove event is updated only when the MouseDown event is fired, not every time the MouseMove event is fired.



RESOLUTION
To work around this problem, one could use an OCX or tool that allows the trapping of Windows messages. The code would need to be written, but one possible scheme could involve a flag variable that would be set whenever the ListView control received a WM_LBUTTONDOWN or WM_RBUTTONDOWN message and only reset when a corresponding WM_LBUTTONUP or WM_RBUTTONUP message was received. This flag variable could be used as the equivalent of the button argument in the MouseMove event, because it will return different values when the mouse button has been clicked or when the mouse button has been clicked but not released. The Message Blaster OCX, produced by WareWithAll, is a good tool to use to trap Windows messages.



STATUS
Microsoft has confirmed this to be a bug in the Microsoft products listed at the beginning of this article. This bug has been fixed in Visual Basic 6.0.



Steps to Reproduce
 Start Visual Basic 4.0. Form1 is created by default. Add a single ListView control to the form. Also add one label control. Set the following property of the ListView control:

MultiSelect: True

  Add this code to the form: Private Sub Form_Load ListView1.ListItems.Add, , "item 1" End Sub

Private Sub ListView1_MouseMove(Button As Integer, Shift As Integer, x  As Single, y As Single) Label1.Caption = Button End Sub  Press F5 or select Start from the Run menu to run the application. Click once on the white space of the control and see that the label changes to show a 1--the constant for the left mouse button. Now move the mouse button around and see that the label still shows 1 even though the left mouse button is not pressed.</ol>

Additional query words: kbVBp400bug kbVBp600fix kbVBp kbdsd kbDSupport kbControl

Keywords: kbbug kbfix KB149275

-

[mailto:TECHNET@MICROSOFT.COM Send feedback to Microsoft]

© Microsoft Corporation. All rights reserved.