Don't get the node pointer. Controls shouldn't know how their values are being used, just take your inputs, apply your algorithm to it, and return the value.
For example, to create a LookAt, I would define my Control to be of superclass type CTRL_ROTATION_CLASS_ID. When this control evaluates (GetValue is called with method = CTRL_RELATIVE), it will be passed a pointer to the transform you want to apply your value to. Assuming your rotation is part of a PRS, then the transform will be the parents transform, + the Position part of the (P)RS.
void YourClass::GetValue(TimeValue t, void* val, ...)
{
Matrix3* pInTransform = reinterpret_cast<Matrix3*>(val);
Point3& pMyPosition = pInTransform->GetTrans();
With the position, you can get the position of your target, then rotate/set that input matrix so your eye vector points at the target
I'd highly recommend the learning path section of the documentation for a general understanding of how the animation hierarchy in Max works.