实现金山快译工具条的自动收缩功能

来源:互联网 发布:seo外包公司如何优化 编辑:程序博客网 时间:2024/06/10 08:29

使用了二个API

GetCursorPoslpPoint As POINTAPI as Long

ScreenToClientByVal hwnd As Long, lpPoint As POINTAPI as Long

这两个API是用来实现“金山快译”的自动收缩效果的。
'最重要的是判断鼠标的位置是否在窗体中的事件
,如下:
Private Sub Form_MouseMove(Button As Integer, Shift As Integer, x As Single, y As Single)
Isout = False             
Me.Top = 0               
Do While Isout = False     
'然后通过循环来判断,直到移出标志为True
    GetCursorPos MyPoint          
'获得当前鼠标位置,并放在结构MyPoint,单位为象素
    ScreenToClient Me.hwnd, MyPoint     
'使结构的坐标成为对应程序中的坐标
    If MyPoint.x < 0 Or MyPoint.y < -10 Or _
             MyPoint.x > Me.Width / 15 Or MyPoint.y > Me.Height / 15 Then     

'统一转化为象素后比较(横坐标小于0或大于窗体宽,纵坐标小于-10或大于窗体高)
'如果条件成立则表示已经不在窗体内,这里纵坐标不要写成MyPoint.y<0,因为尽管窗体的To
p =0 紧贴在窗体顶部,但是单单小于0还是可以让鼠标划得到,(-10)则无论如何也不可能点
'得到了.
        Isout = True                   
'置标志为True
        Me.Top = Int(-0.8 * Me.Height)  
'再次隐藏
        Exit Sub                        
'退出过程
    End If
    DoEvents                       
'要记得交还控制权给系统
Loop
End Sub