>>lnReturnValue = GrandParent::MyClass(Par1, Par2)
>I'm presuming that I would replace "GrandParent" with the actual name of my grandparent class.
Yes, that is the idea.
>Do you know if there is some generic way to get at that name?
No, I know of no automatic way. I think it was precisely this difficulty (in the usual case of getting the parent class) that the DoDefault() was introduced in VFP5.
But I think it should be possible to do the usual inheritance, and put conditional code in the parent class (that is, the one between the grandparent and the grandchild), to execute some code, or not.
Or perhaps you should inherit directly from what you now consider the "grandparent".
Difference in opinions hath cost many millions of lives: for instance, whether flesh be bread, or bread be flesh; whether whistling be a vice or a virtue; whether it be better to kiss a post, or throw it into the fire... (from Gulliver's Travels)