65536在这里是什么?

nanyankaoran 2008-03-09 09:14:17
Option Explicit
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 Form_Load()
Dim i
For i = 1 To 200
List1.AddItem Str(i) + " ÕâÊǵڶàÉÙÐÐ " + Str(i)
Next i
End Sub
Private Sub List1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
Dim lXPoint As Long
Dim lYPoint As Long
Dim lIndex As Long
If Button = 0 Then 'È·¶¨ÔÚÒƶ¯Êó±êµÄͬʱûÓа´Ï¹¦Äܼü»òÕßÊó±ê¼ü
'»ñµÃ¹â±êµÄλÖã¬ÒÔÏñËØΪµ¥Î»
lXPoint = CLng(X / Screen.TwipsPerPixelX)
lYPoint = CLng(Y / Screen.TwipsPerPixelY)
'
With List1
'»ñµÃ ¹â±êËùÔڵıêÌâÐеÄË÷Òý
lIndex = SendMessage(.hwnd, LB_ITEMFROMPOINT, 0, ByVal ((lYPoint * 65536) + lXPoint))
Debug.Print lIndex
'½«ListBoxµÄTooltipÉèÖÃΪ¸Ã±êÌâÐеÄÎı¾
If (lIndex >= 0) And (lIndex <= .ListCount) Then
.ToolTipText = .List(lIndex) 'Return the text = .list(lIndex)
Else
.ToolTipText = ""
End If
End With
End If
End Sub
...全文
638 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
nanyankaoran 2008-03-11
  • 打赏
  • 举报
回复
为什么非要写入高16位
嗷嗷叫的老马 2008-03-10
  • 打赏
  • 举报
回复
lIndex = SendMessage(.hwnd, LB_ITEMFROMPOINT, 0, ByVal ((lYPoint * 65536) + lXPoint))

你只需要发这一句就可以了,不要让人看着眼花.

关于这个65536,是为了把lYPoint值写到高四位.

65536=&H10000.
Sandrer 2008-03-10
  • 打赏
  • 举报
回复
1字节=8位二进制数据
Long类型=4字节~
Sandrer 2008-03-10
  • 打赏
  • 举报
回复
是高16位~~~~以二进制算。。。。。
舉杯邀明月 2008-03-10
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 Sandrer 的回复:]
是高16位~~~~以二进制算。。。。。
[/Quote]

正确!
wks5211314 2008-03-10
  • 打赏
  • 举报
回复
说的 都 对 ! 我也支持 !` 就是 以上 的 意思
嗷嗷叫的老马 2008-03-10
  • 打赏
  • 举报
回复
呃....十六进制...@_@
嗷嗷叫的老马 2008-03-10
  • 打赏
  • 举报
回复
..我习惯按十六位...-_-

1,488

社区成员

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

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