Option ExplicitPrivate Declare FunctionCallWindowProcLib "User32" Alias "Callwindowproca"(ByValLpprevwndfunc as Long,ByValhwnd as Long,ByValMsg as Long,ByValWParam as Long,ByValLParam as Long) as Long PublicType mysubparams ID as LongName as StringEndTypeSubMYSUB1 (P asMysubparams, a as LongB as LongC as Long) Debug.Print VarPtr (p)MsgBox "MySub1"& P.id &" "&P.nameEnd SubSubMYSUB2 (P asMysubparams, a as LongB as LongC as Long) Debug.Print VarPtr (p)MsgBox "MYSUB2"& P.id &" "&P.nameEnd SubFunctionCallsub (Address as LongParams as Long) Callsub= CallWindowProc (address, params,0&,0&,0&)End FunctionSubStart ()DimA as Long DimP asMysubparams p.id=1P.name="Test1"Debug.Print VarPtr (P) Debug.Print Callsub (AddressOfMySub1, VarPtr (p)) P.id=2P.name="Test2"Debug.Print Callsub (AddressOfMySub2, VarPtr (p))End Sub
VB6 function pointer passing