当鼠标移到下一个控件时,前一个控件边框周围所画矩形被清除。Private Declare Function GetCursorPos Lib "USER32" (lpPoint As POINTAPI) As Long
Private Declare Function WindowFromPoint Lib "USER32" (ByVal xPoint As Long, ByVal yPoint As Long) As Long
Private Declare Function GetWindowRect Lib "USER32" (ByVal hwnd As Long, lpRect As RECT) As Long
Private Declare Function GetDC Lib "USER32" (ByVal hwnd As Long) As Long
Private Declare Function SelectObject Lib "GDI32" (ByVal hDC As Long, ByVal hObject As Long) As Long
Private Declare Function DeleteObject Lib "GDI32" (ByVal hObject As Long) As Long
Private Declare Function ReleaseDC Lib "USER32" (ByVal hwnd As Long, ByVal hDC As Long) As Long
Private Declare Function CreatePen Lib "GDI32" (ByVal nPenStyle As Long, ByVal nWidth As Long, ByVal crColor As Long) As Long
Private Declare Function MoveToEx Lib "GDI32" (ByVal hDC As Long, ByVal X As Long, ByVal Y As Long, lpPoint As POINTAPI) As Long
Private Declare Function LineTo Lib "GDI32" (ByVal hDC As Long, ByVal X As Long, ByVal Y As Long) As Long
Private Type RECT
Left As Long
Top As Long
Right As Long
Bottom As Long
End Type
Private Type POINTAPI
X1 As Long
y1 As Long
End Type
Dim sX, sY, X, Y As IntegerPrivate Sub Command1_Click()
Timer1.Interval = 200
Timer1.Enabled = True
End Sub
Private Sub Timer1_Timer()
Dim hwnd As Long
Dim pt As POINTAPI
Dim lRect As RECT
Dim a As Long, TemphPen As Long, OldhPen As Long
GetCursorPos pt '取得鼠标坐标信息
hwnd = WindowFromPoint(pt.X1, pt.y1)
Call GetWindowRect(hwnd, lRect)
sX = lRect.Left - 1
sY = lRect.Top - 1
X = lRect.Right + 1
Y = lRect.Bottom + 1
a = GetDC(0)
TemphPen = CreatePen(PS_SOLID, 5, &HFF&)
OldhPen = SelectObject(a, TemphPen)
MoveToEx a, sX, sY, pt
LineTo a, X, sY
MoveToEx a, X, sY, pt
LineTo a, X, Y
MoveToEx a, X, Y, pt
LineTo a, sX, Y
MoveToEx a, sX, Y, pt
LineTo a, sX, sY
SelectObject a, OldhPen
DeleteObject TemphPen
ReleaseDC 0, a
End Sub
Private Declare Function WindowFromPoint Lib "USER32" (ByVal xPoint As Long, ByVal yPoint As Long) As Long
Private Declare Function GetWindowRect Lib "USER32" (ByVal hwnd As Long, lpRect As RECT) As Long
Private Declare Function GetDC Lib "USER32" (ByVal hwnd As Long) As Long
Private Declare Function SelectObject Lib "GDI32" (ByVal hDC As Long, ByVal hObject As Long) As Long
Private Declare Function DeleteObject Lib "GDI32" (ByVal hObject As Long) As Long
Private Declare Function ReleaseDC Lib "USER32" (ByVal hwnd As Long, ByVal hDC As Long) As Long
Private Declare Function CreatePen Lib "GDI32" (ByVal nPenStyle As Long, ByVal nWidth As Long, ByVal crColor As Long) As Long
Private Declare Function MoveToEx Lib "GDI32" (ByVal hDC As Long, ByVal X As Long, ByVal Y As Long, lpPoint As POINTAPI) As Long
Private Declare Function LineTo Lib "GDI32" (ByVal hDC As Long, ByVal X As Long, ByVal Y As Long) As Long
Private Type RECT
Left As Long
Top As Long
Right As Long
Bottom As Long
End Type
Private Type POINTAPI
X1 As Long
y1 As Long
End Type
Dim sX, sY, X, Y As IntegerPrivate Sub Command1_Click()
Timer1.Interval = 200
Timer1.Enabled = True
End Sub
Private Sub Timer1_Timer()
Dim hwnd As Long
Dim pt As POINTAPI
Dim lRect As RECT
Dim a As Long, TemphPen As Long, OldhPen As Long
GetCursorPos pt '取得鼠标坐标信息
hwnd = WindowFromPoint(pt.X1, pt.y1)
Call GetWindowRect(hwnd, lRect)
sX = lRect.Left - 1
sY = lRect.Top - 1
X = lRect.Right + 1
Y = lRect.Bottom + 1
a = GetDC(0)
TemphPen = CreatePen(PS_SOLID, 5, &HFF&)
OldhPen = SelectObject(a, TemphPen)
MoveToEx a, sX, sY, pt
LineTo a, X, sY
MoveToEx a, X, sY, pt
LineTo a, X, Y
MoveToEx a, X, Y, pt
LineTo a, sX, Y
MoveToEx a, sX, Y, pt
LineTo a, sX, sY
SelectObject a, OldhPen
DeleteObject TemphPen
ReleaseDC 0, a
End Sub
为什么不用
Private Sub Command1_Click()
Form1.Line (Label1.Left, Label1.Top)-(Label1.Left + Label1.Width, Label1.Top + Label1.Height), , B
End SubPrivate Sub Command2_Click()
Form1.Cls
End Sub呢?
一个Label1,两个按钮Command1和Command2