現在許多程序的窗體都有自動隱藏/顯示的功能(比如OICQ)。 實現這樣的功能其實很簡單,原理是:判斷鼠標是否移到了屏幕的最左邊或最右邊,如果移到了則顯示窗體,如果鼠標移開了窗體則隱藏窗體。在本程序中,我們將用到GetCursorPos這個API函數是實現這個功能最重要的一步,這個函數的作用就是獲取當前鼠標的坐標值,我們可以通過這個值來判斷鼠標是否移到了屏幕的最邊緣.下面我們就開始吧。
新建一窗體,將Form1更名為AutoHide將vbBorderStyle屬性設置為4-Fixed ToolWindow這樣就不能改變窗體的大小,ScaleMode屬性設置為2-Point。加入一個Timer控件,將Interval的值設為1。
再新建一個模塊,輸入如下代碼:
Public Declare Function GetCursorPos Lib "user32" lpPoint As POINTAPI As Long Type POINTAPI x As Long y As Long End Type
該代碼則是用於聲明GetCursorPos這個API函數的。這個API函數可以在VB6中自帶的“API 浏覽器”中查找到。
在AutoHide窗體中,輸入如下代碼:
Dim Mouse As POINTAPI '這句代碼在聲明部分中加入
Private Sub Form_Load
AutoHide.Height = Screen.Height '使窗體高度與屏幕高度相同 '調整窗體的顯示位置
AutoHide.Top = 0 AutoHide.Left = 0 - AutoHide.Width + 50 '使窗體在屏幕的最左邊顯示並顯示出一小部分窗體此時為收縮狀態
End Sub
Private Sub Timer1_Timer
a = GetCursorPosMouse
If Mouse.x = 0 Then '鼠標移到了屏幕的最左邊x為屏幕的縱坐標,當縱坐標為0時,表示鼠標已經移到了最左邊,因此這是最關鍵的一步
AutoHide.Left = 0 '使窗體居左顯示
End If
If Mouse.x > AutoHide.ScaleWidth Then '如果鼠標沒有在窗體之上則隱藏窗體.
注意:窗體的ScaleMode屬性一定要設置為2-Point,否則達不到隱藏的效果
AutoHide.Left = 0 - AutoHide.Width + 50 '如果前面沒有加上50這裡也不加上。
End If
End Sub
好了,單擊F5運行一下就可以看到我們的效果了。