At a quick glance you're switching the view in the child frame instead of activating the correct frame. I'm not sure why you're even doing that. If you comment out the call to ForceActivate the program behaves the same way. Use the MDIActivate function and pass in a pointer to a child frame as I said instead of switching the view in the active frame.