為了這個答案我已經傾家蕩產......

leolan 2003-11-29 01:34:37
ListBox:怎樣可以在MouseDown事件中if Button=2時,選中一個Item(Mouse的當前位置)???????在線waiting!!!!萬分火急!!!!!!!!!!!!!!!!!!!!!!!!
...全文
64 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
leolan 2003-12-01
  • 打赏
  • 举报
回复
northwolves,
厲害啊!~
高手,佩服佩服.非常感謝!
不過我這調用了另一個API,通過模擬左鍵也能實現這個功能:

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_RIGHTDOWN = &H8 ' right button down
Private Const MOUSEEVENTF_RIGHTUP = &H10 ' right button up

Private Sub List1_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single)
If Button = vbRightButton Then
Call mouse_event(MOUSEEVENTF_RIGHTDOWN, 0, 0, 0, 0)
Call mouse_event(MOUSEEVENTF_RIGHTUP, 0, 0, 0, 0)
DoEvents
End If
End Sub

也挺麻煩的,以後還請你多多指教嘍!
northwolves 2003-12-01
  • 打赏
  • 举报
回复
应是leftup,leftdown

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_LEFTUP = &H4 ' left button up
Private Const MOUSEEVENTF_LEFTDOWN = &H2 ' left button down


Private Sub List1_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single)
If Button = vbRightButton Then
Call mouse_event(MOUSEEVENTF_LEFTDOWN + MOUSEEVENTF_LEFTUP, 0, 0, 0, 0)
DoEvents
End If
End Sub
northwolves 2003-11-30
  • 打赏
  • 举报
回复
这个不难,SENDMESSAGE可以实现:
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 Sub Form_Load()
For i = 1 To 100
List1.AddItem i
Next
End Sub



Private Sub List1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
Dim lX As Long
Dim lY As Long
Dim lIndex As Long
lX = CLng(X / Screen.TwipsPerPixelX)
lY = CLng(Y / Screen.TwipsPerPixelY)
lIndex = SendMessage(List1.hwnd, &H1A9, 0, _
ByVal ((lY * 65536) + lX))
If Button = 2 Then
List1.SetFocus
If lIndex >= 0 And lIndex <= List1.ListCount Then
List1.Selected(lIndex) = True

End If
End If
End Sub
xshhui 2003-11-30
  • 打赏
  • 举报
回复
不知道你说明了一个什么问题

1,451

社区成员

发帖
与我相关
我的任务
社区描述
VB 控件
社区管理员
  • 控件
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧