You need a CScenGenDoc object, let's call it x, then you can do x.OnSend();, or if x is a pointer to CScenGenDoc then you would do x->OnSend();

If you want to call the function without the object existing then you need to make the function static, then it can be called with CScenGenDoc::OnSend();

You would only need to make landmove() a friend of CScenGenDoc if CScenGenDoc::OnSend() is private or protected. However if that's the case then the designer of CScenGenDoc really didn't mean you to be calling that function directly so you should discuss with the designer how you can access that functionality. If it turns out that CScenGenDoc::OnSend() can be public after all then make it public and don't make landmove() a friend of CScenGenDoc.