IDE-safe subclassing, hooking and fire-once timers that have no problems with End
button/statement in VBIDE.
These thunks allow implementing IDE-safe window subclassing, windows hooks and fire-once timers for self-contained user-controls, forms and classes.
Start by including src\mdModernSubclassing.bas
in your project.
Add private m_pSubclass As IUnknown
member variable to your form/class.
Add private pvAddressOfSubclassProc
helper property to your form/class.
Private Property Get pvAddressOfSubclassProc() As frmTestSubclass
Set pvAddressOfSubclassProc = InitAddressOfMethod(Me, 5)
End Property
Notice return type frmTestSubclass
is the name of your form/class and this is important to match.
Add public SubclassProc
function with proper SUBCLASSPROC input parameters and return type.
Public Function SubclassProc(ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long, Handled As Boolean) As Long
Select Case wMsg
Case WM_WINDOWPOSCHANGED
...
End Select
End Function
Start subclassing with an InitSubclassingThunk
call in Form_Load
or any other routine.
Set m_pSubclass = InitSubclassingThunk(hWnd, Me, pvAddressOfSubclassProc.SubclassProc(0, 0, 0, 0, 0))
Can explicitly unsubclass by clearing the m_pSubclass
variable in Form_Unload
but no harm to leave it auto-clear on shutdown.
Set m_pSubclass = Nothing