发信人: gpu()
整理人: fishy(2000-06-02 18:48:36), 站内信件
|
和OICQ窗体的感觉一样。可以在屏幕上、左、右隐藏(当然也能显示在最前和在 系统栏图标显示,不过代码太多了,剪掉了..)
建立工程,创建Form1,加入Timer1,添加模块
--------------------
模块代码:
Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Lo ng
Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (By Val hWnd As Long, ByVal nIndex As Long) As Long
Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (By Val hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Lo ng
Declare Function WindowFromPoint Lib "user32" (ByVal xPoint As Long, B yVal yPoint As Long) As Long
Declare Function CallWindowProc Lib "user32" Alias "CallWindowProcA" ( ByVal lpPrevWndFunc As Long, ByVal hWnd As Long, ByVal Msg As Long, By Val wParam As Long, ByVal lParam As Long) As Long
Public Const GWL_WNDPROC = (-4)
Public Const WM_NCmousemove = &HA0
Public prevWndProc As Long
Type RECT
Left As Long
Top As Long
Right As Long
Bottom As Long
End Type
Type POINTAPI
X As Long
Y As Long
End Type
Function WndProc(ByVal hWnd As Long, ByVal Msg As Long, ByVal wParam A s Long, ByVal lParam As Long) As Long
WndProc = CallWindowProc(prevWndProc, hWnd, Msg, wParam, lParam)
If Msg = WM_NCmousemove Then
If Form1.Top < 200 Then
Form1.Top = 0
End If
If Form1.Left < 200 Then
Form1.Left = 0
End If
If Form1.Top > Screen.Height - Form1.Height - 200 Then
Form1.Top = Screen.Height - Form1.Height
End If
If Form1.Left > Screen.Width - Form1.Width - 200 Then
Form1.Left = Screen.Width - Form1.Width
End If
End If
End Function
窗体代码:
Private Sub Form_Load()
Timer1.Interval = 500
prevWndProc = GetWindowLong(Me.hWnd, GWL_WNDPROC)
SetWindowLong Me.hWnd, GWL_WNDPROC, AddressOf WndProc
End Sub
Private Sub Form_Unload(Cancel As Integer)
SetWindowLong Me.hWnd, GWL_WNDPROC, prevWndProc
End Sub
Private Sub Timer1_Timer()
Dim hCursorWnd As Long, point As POINTAPI
GetCursorPos point
hCursorWnd = WindowFromPoint(point.X, point.Y)
If Form1.hWnd <> hCursorWnd Then
If Form1.Top = 0 Then
Form1.Top = 30 - Form1.Height
ElseIf Form1.Left = 0 Then
Form1.Left = 30 - Form1.Width
ElseIf Form1.Left = Screen.Width - Form1.Width Then
Form1.Left = Screen.Width - 30
End If
End If
End Sub
-- ╔═══════════╗
║ ★ ☆ ★ ★ ★ ☆ ★ ║
║▁▂▃▄▅▆▅▄▃▂▁║
╚═══════════╝
※ 来源:.月光软件站 http://www.moon-soft.com.[FROM: 61.157.6.217]
|
|