I forgot to say, I'm using VB6, not VB.net
Now, this is what I've done to discard activating a form, but no luck!
Can anybody figure out the bug?Or what else I should do?
'*********
'In Form1
Option Explicit
Private Sub Form_Load()
InitiateSubclass Me.hWnd
End Sub
Private Sub Form_Unload(Cancel As Integer)
RemoveSubclass hWnd
End Sub
'*********
'In Module1
'*********
Option Explicit
Private mprocOld As Long
Private Const GWLWNDPROC As Long = (-4&)
Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hWnd&, ByVal nIndex&, ByVal dwNewLong&) As Long
Public Declare Function PostMessage Lib "user32" Alias "PostMessageA" (ByVal hWnd&, ByVal wMsg&, ByVal wParam&, lParam As Any) As Long
Private Declare Function CallWindowProc Lib "user32" Alias "CallWindowProcA" (ByVal lpPrevWndFunc&, ByVal hWnd&, ByVal Msg&, ByVal wParam&, ByVal lParam&) As Long
Public Const WMNCACTIVATE = &H86
Public Const WMACTIVATE = &H6
Public Const WMACTIVATEAPP = &H1C
Public Const WMMOUSEACTIVATE = &H21
Public Function WindowProc(ByVal hWnd As Long, ByVal iMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
If iMsg = WMNCACTIVATE Or iMsg = WMACTIVATE Or iMsg = WMACTIVATEAPP Then
If wParam = True Then
WindowProc = 0
Exit Function
End If
End If
WindowProc = CallWindowProc(mprocOld, hWnd, iMsg, wParam, lParam)
End Function
Public Sub InitiateSubclass(ByVal hWnd&)
mprocOld = SetWindowLong(hWnd, GWLWNDPROC, AddressOf WindowProc)
End Sub
Public Sub RemoveSubclass(ByVal hWnd&)
Call SetWindowLong(hWnd, GWLWNDPROC, mprocOld)
End Sub
'*********
Enter your message below
Sign in or Join us (it's free).