Controlling external application from a VC++/MFC program

I have a program(in VC++) which will run another external application.

I should be able to control the ext. application using my program, including positioning of the app inside the GUI provided by my program, data exchange etc.

That means, the external application should fit inside the GUI framework(for eg. a panel) provided by my VC++/MFC program. The external application may be an MFC app or a non-NFC app. I am trying to run the external application using CreateProcess method. I have tried to do the same using ShellExecute command. But of them are executing the ext. app, but not inside the GUI provided by the calling process, somewhere in an arbitrary location.

Also I need to know how to communicate with the ext. app for data exchange and event passing etc.