Private Declare Function ReleaseCapture Lib "user32" () As Long
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Long) As Long
Const HTCAPTION = 2
Const WM_NCLBUTTONDOWN = &HA1
'用来运动东西
Private Sub Command1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Button = 1 Then
ReleaseCapture
SendMessage Command1.hwnd, WM_NCLBUTTONDOWN, HTCAPTION, 0
End If
End Sub
Const LB_ITEMFROMPOINT = &H1A9
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 List1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
Dim pos As Long, idx As Long
pos = X / Screen.TwipsPerPixelX + Y / Screen.TwipsPerPixelY * 65536
idx = SendMessage(List1.hwnd, LB_ITEMFROMPOINT, 0, ByVal pos)
' idx 即等于鼠标所在位置的选项
If idx < 65536 Then List1.ToolTipText = List1.List(idx)
End Sub
Private Sub List1_OLEDragDrop(Data As DataObject, Effect As Long, Button As Integer, Shift As Integer, X As Single, Y As Single)
Dim Pd As Boolean '设置List1.OLEDropMode =1
Dim i As Integer, J As Integer
If Data.GetFormat(vbCFFiles) = True Then
For i = 1 To Data.Files.Count
Pd = False '说没有相同
For J = 0 To List1.ListCount '如果有相同就说有了
If Data.Files.Item(i) = List1.List(J) Then Pd = True
Next
'在没有相同的情况下,以及是待计算的 Excel 文件,就加上去
If Pd = False And LCase(Right(Data.Files.Item(i), 4)) = ".xls" Then
List1.AddItem Data.Files.Item(i)
End If
Next
End If
End Sub