如何使控件的内容根据鼠标的位置发生变化
编号:QA001806
建立日期: 1999年10月2日 最后修改日期:1999年10月2日
所属类别:
LL:
我是VB初学者,现有一事不明须请教:我做了一表单Form,上有一图片Image1,当鼠标移动(Move)到Image1时,Image1变成Image2,不知程序该如何实现?
回答:
我在QA000437 "如何设置鼠标为不可见及如何捕捉到鼠标移动"介绍了如何捕捉到鼠标移动,具体到你的问题可以采用下面的办法:
1、在Form上放置一个Timer控件,设置Interval属性为100。
2、设置Form的ScaleMode属性为3。
3、输入如下代码:
Dim highlighted As Boolean
Private Type POINTAPI
x As Long
y As Long
End Type
Private Declare Function ScreenToClient Lib "user32" (ByVal hwnd As Long, lpPoint As POINTAPI) As Long
Private Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long
Private Sub Image1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
If highlighted Then Exit Sub
highlighted = True
Image1.Picture = LoadPicture("nav_catalog_roll.gif")
Timer1.Enabled = True
End Sub
Private Sub Timer1_Timer()
Dim pt As POINTAPI
GetCursorPos pt
ScreenToClient hwnd, pt
If pt.X < Image1.Left Or pt.Y < Image1.Top Or _
pt.X > Image1.Left + Image1.Width Or _
pt.Y > Image1.Top + Image1.Height _
Then
highlighted = False
Image1.Picture = LoadPicture("nav_catalog.gif")
Timer1.Enabled = False
End If
End Sub
此问题由李海回答。
| |
|
|
| |
|
|