参照以下方法: ============================= '在窗体上放一个 OptionButton '==========|Form1|=============== Option ExplicitPrivate Sub Form_Load() HookNoFocus Option1.hWnd End SubPrivate Sub Form_Unload(Cancel As Integer) UnHookNoFocus End Sub''添加一个模块,COPY 下面的代码: '==========|Module1|================== Option Explicit Private Declare Function CallWindowProc Lib "user32" Alias "CallWindowProcA" (ByVal lpPrevWndFunc As Long, ByVal hWnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As LongPrivate Const GWL_WNDPROC = (-4) Private Const WM_SETFOCUS = &H7Private OldProc As Long Private m_hWnd As LongPrivate Function WinProc&(ByVal hWnd&, ByVal wMsg&, ByVal wParam&, ByVal lParam&)
Select Case wMsg Case WM_SETFOCUS Exit Function End Select
WinProc& = CallWindowProc(OldProc, hWnd, wMsg, wParam, lParam) End Function Sub HookNoFocus(ByVal nhWnd As Long) If OldProc <> 0 Then Exit Sub
m_hWnd = nhWnd&
OldProc = SetWindowLong(nhWnd&, GWL_WNDPROC, AddressOf WinProc)End Sub Sub UnHookNoFocus() If OldProc = 0 Then Exit Sub SetWindowLong m_hWnd, GWL_WNDPROC, OldProc OldProc = 0 End Sub''看看是不是没有焦点了?
=============================
'在窗体上放一个 OptionButton
'==========|Form1|===============
Option ExplicitPrivate Sub Form_Load()
HookNoFocus Option1.hWnd
End SubPrivate Sub Form_Unload(Cancel As Integer)
UnHookNoFocus
End Sub''添加一个模块,COPY 下面的代码:
'==========|Module1|==================
Option Explicit
Private Declare Function CallWindowProc Lib "user32" Alias "CallWindowProcA" (ByVal lpPrevWndFunc As Long, ByVal hWnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As LongPrivate Const GWL_WNDPROC = (-4)
Private Const WM_SETFOCUS = &H7Private OldProc As Long
Private m_hWnd As LongPrivate Function WinProc&(ByVal hWnd&, ByVal wMsg&, ByVal wParam&, ByVal lParam&)
Select Case wMsg
Case WM_SETFOCUS
Exit Function
End Select
WinProc& = CallWindowProc(OldProc, hWnd, wMsg, wParam, lParam)
End Function
Sub HookNoFocus(ByVal nhWnd As Long) If OldProc <> 0 Then Exit Sub
m_hWnd = nhWnd&
OldProc = SetWindowLong(nhWnd&, GWL_WNDPROC, AddressOf WinProc)End Sub
Sub UnHookNoFocus() If OldProc = 0 Then Exit Sub SetWindowLong m_hWnd, GWL_WNDPROC, OldProc
OldProc = 0
End Sub''看看是不是没有焦点了?