Thanks again, Jane,
That has cracked it.
In my little debug loop, when I get to the event I'm interested in (ptrEvent) I loop over its child items. What I was doing was looking for the SOUR tag and instead of looping over its child items I was getting the source record from the link, and of course the OBJE wasn't in that.
Using pObj = fhGetItemPtr(ptrEvent,'~.SOUR.OBJE>') showed me it really really was there after all.