如何在LISTBOX中移动鼠标就可以起到CLICK的作用
2005-11-17 23:07
295 查看
曾经看到有些软件能够实现这个效果,无非是向LISTBOX发送消息,获得光标所在位置的ITEM;或者干脆模拟一个鼠标左键的单击事件。下面用两种方法分别一试:
方法1 Sendmessage 向LISTBOX发送消息
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Private Const LB_ITEMFROMPOINT = &H1A9
Private Sub Form_Load()
Dim i As Byte
For i = 1 To 20
List1.AddItem String(i, Chr(i + 64))
Next
End Sub
Private Sub List1_Click() '随时看到效果
Me.Caption = "The listitem you select is """ & List1.Text & """"
End Sub
Private Sub List1_Mousemove(Button As Integer, Shift As Integer, X As Single, Y As Single)
Dim lX As Long, lY As Long, lIndex As Long
lX = CLng(X / Screen.TwipsPerPixelX)
lY = CLng(Y / Screen.TwipsPerPixelY)
lIndex = SendMessage(List1.hwnd, LB_ITEMFROMPOINT, 0, ByVal ((lY * &H10000) + lX))
If lIndex >= 0 And lIndex <= List1.ListCount Then List1.Selected(lIndex) = True
End Sub
方法2 模拟鼠标左键单击
Private Declare Sub mouse_event Lib "user32" (ByVal dwFlags As Long, ByVal dx As Long, ByVal dy As Long, ByVal cButtons As Long, ByVal dwExtraInfo As Long)
Private Const MOUSEEVENTF_LEFTDOWN = &H2
Private Const MOUSEEVENTF_LEFTUP = &H4
Private Const MOUSEEVENTF_ABSOLUTE = &H8000
Private Sub Form_Load()
Dim i As Byte
For i = 1 To 20
List1.AddItem String(i, Chr(i + 64))
Next
End Sub
Private Sub List1_Click() '随时看到效果
Me.Caption = "The listitem you select is """ & List1.Text & """"
End Sub
Private Sub List1_Mousemove(Button As Integer, Shift As Integer, X As Single, Y As Single)
mouse_event MOUSEEVENTF_ABSOLUTE Or MOUSEEVENTF_LEFTDOWN, X, Y, 0, 0
mouse_event MOUSEEVENTF_ABSOLUTE Or MOUSEEVENTF_LEFTUP, X, Y, 0, 0
End Sub
这样,在LISTBOX中移动鼠标时,就会看到窗体的标题动态的变化,当然,你可以把该事件写到MOUSEDOWN 或MOUSEUP 中,达到别的效果。
方法1 Sendmessage 向LISTBOX发送消息
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Private Const LB_ITEMFROMPOINT = &H1A9
Private Sub Form_Load()
Dim i As Byte
For i = 1 To 20
List1.AddItem String(i, Chr(i + 64))
Next
End Sub
Private Sub List1_Click() '随时看到效果
Me.Caption = "The listitem you select is """ & List1.Text & """"
End Sub
Private Sub List1_Mousemove(Button As Integer, Shift As Integer, X As Single, Y As Single)
Dim lX As Long, lY As Long, lIndex As Long
lX = CLng(X / Screen.TwipsPerPixelX)
lY = CLng(Y / Screen.TwipsPerPixelY)
lIndex = SendMessage(List1.hwnd, LB_ITEMFROMPOINT, 0, ByVal ((lY * &H10000) + lX))
If lIndex >= 0 And lIndex <= List1.ListCount Then List1.Selected(lIndex) = True
End Sub
方法2 模拟鼠标左键单击
Private Declare Sub mouse_event Lib "user32" (ByVal dwFlags As Long, ByVal dx As Long, ByVal dy As Long, ByVal cButtons As Long, ByVal dwExtraInfo As Long)
Private Const MOUSEEVENTF_LEFTDOWN = &H2
Private Const MOUSEEVENTF_LEFTUP = &H4
Private Const MOUSEEVENTF_ABSOLUTE = &H8000
Private Sub Form_Load()
Dim i As Byte
For i = 1 To 20
List1.AddItem String(i, Chr(i + 64))
Next
End Sub
Private Sub List1_Click() '随时看到效果
Me.Caption = "The listitem you select is """ & List1.Text & """"
End Sub
Private Sub List1_Mousemove(Button As Integer, Shift As Integer, X As Single, Y As Single)
mouse_event MOUSEEVENTF_ABSOLUTE Or MOUSEEVENTF_LEFTDOWN, X, Y, 0, 0
mouse_event MOUSEEVENTF_ABSOLUTE Or MOUSEEVENTF_LEFTUP, X, Y, 0, 0
End Sub
这样,在LISTBOX中移动鼠标时,就会看到窗体的标题动态的变化,当然,你可以把该事件写到MOUSEDOWN 或MOUSEUP 中,达到别的效果。
相关文章推荐
- 如何在LISTBOX中移动鼠标就可以起到CLICK的作用
- java JFrame去掉标题栏后如何实现鼠标移动到边框可以进行拖拉以放大缩小
- 实现一个宽和高都是100像素的div可以用鼠标拖拽移动的效果
- 电路与Multisim基础 示波器的测量游标用鼠标移动不精准,如何微调
- 长文章分页代码,页码可以随鼠标移动和当前所在页码变色
- Alutium Designer中原理图库设计时如何设置鼠标移动元器件的最小间隔
- bootstrap tab切换如何让鼠标移动自动切换内容
- 设置鼠标可以移动窗体
- CSS3实现鼠标移动到图片上图片变大(缓慢变大,有过渡效果,放大的过程是有动画过渡的,这个过渡的时间可以自定义)
- Google 将知道你的鼠标是如何在搜索结果页面上移动的
- 在delphi中如何限制鼠标的移动区域。
- php如何使得你的对象可以像数组一样可以被访问(ArrayAccess 的作用)?
- css如何实现滚动条隐藏但鼠标仍然可以滚动
- 如何解决嵌入式directfb的鼠标无法移动问题_20120507
- 当鼠标移动到界面外面, 如何继续得到WM_LBUTTONUP消息
- 设置鼠标可以移动窗体
- Win7下如何用Eclipse导出jar类型的文件,并且可以用鼠标双击打开jar类型的文件的方法(解决双击后一闪而过)
- [转]如何在视图中跟随鼠标移动显示曲线坐标
- Jquery之鼠标移动到图片上显示文字并且文字可以点击
- Mouse without Borders是微软的一个软件实验项目,这款软件可让鼠标自由在局域网中的多台电脑间移动,键盘输入实现无缝切换,还可以直接用鼠标相互拖拽文件。 如果经常需要同时使用两台以