When using #import to create wrapper classes for your own C++ COM objects,
debugging and stepping into the COM methods can be tedious because you have
to first step into the wrapper class and then COM object wrappers for many
of the method’s paramenters (e.g. _bstr_t and _variant_t), before you
finally get to the raw method.
To solve this I have written the macro StepInComFunc to do all the stepping
in and out automatically for you, effectively stepping you directly into
the source code for the method being called. Obviously the COM object will
have to have been built with debug information. I find it useful to map
this macro to the shortcut key ALT+F11.
Sub StepInComFunc()
'DESCRIPTION: A description was not provided.
Application.Debugger.StepInto
Dim nMaxParams, nCount
nCount = 0
nMaxParams = 20
Do While ((ActiveDocument.Name = "COMUTIL.H"
Or ActiveDocument.Name = "ATLBASE.H")
And nCount < nMaxParams)
Application.Debugger.StepOut
Application.Debugger.StepInto
nCount = nCount + 1
Loop
if (ActiveDocument.Name = "COMIP.H") then
Application.Debugger.StepOut
Application.Debugger.StepInto
End If
if (ActiveDocument.Name = "COMIP.H") then
Application.Debugger.StepOut
Application.Debugger.StepInto
End If
if (InStr(ActiveDocument.Name, ".tli") > 0) then
Application.Debugger.StepOver
Application.Debugger.StepInto
End If
nCount = 0
Do While ((ActiveDocument.Name = "COMUTIL.H"
Or ActiveDocument.Name = "ATLBASE.H")
And nCount < nMaxParams)
Application.Debugger.StepOut
Application.Debugger.StepInto
nCount = nCount + 1
Loop
End Sub