In addition to Solution 1:
Who needs MDI, ever? Why torturing yourself and scaring off your users?
Do yourself a great favor: do not use MDI at all. You can do much easier to implement design without it, with much better quality. MDI is highly discouraged even by Microsoft, in fact, Microsoft dropped it out of WPF and will hardly support it. More importantly, you will scare off all your users if you use MDI. Just don't. Please see:
http://en.wikipedia.org/wiki/Multiple_document_interface#Disadvantages[
^],
How to Create MDI Parent Window in WPF?[
^].
I can explain what to do instead. Please see my past answers:
How to Create MDI Parent Window in WPF? [
Solution 2],
Question on using MDI windows in WPF[
^],
MDIContainer giving error[
^],
How to set child forms maximized, last childform minimized[
^].
Yes, I saw that you wanted to use C++ and MFC, but you mentioned C# as well. I never heard of Visual Studio style UI implementation with MFC, which is typically not used for creation of advanced UI, even though it is possible, in principle. And also, you can combine .NET and C++ solution, especially if you also use C++/CLI. You can develop pure C++ modules and use them in .NET application via
P/Invoke, or you can develop C++/CLI project(s) which can be uses in .NET directly, or, finally, you can develop mixed-mode project(s) whiten in the combination of C++, C++/CLI and even C, wrap C/C++ code in C++/CLI classes/structures and then use them referencing this mixed-mode module as a regular .NET assembly.
Please see:
http://en.wikipedia.org/wiki/P/Invoke[
^],
http://msdn.microsoft.com/library/en-us/vcmxspec/html/vcmg_PlatformInvocationServices.asp[
^];
http://en.wikipedia.org/wiki/C%2B%2B/CLI[
^],
http://www.gotw.ca/publications/C++CLIRationale.pdf[
^],
http://www.ecma-international.org/publications/standards/Ecma-372.htm[
^],
http://msdn.microsoft.com/en-us/library/xey702bw.aspx[
^].
—SA