I have a very similar problem to the OP. MDI parent and children written in C. New child written in C# and called via C++ com interop. C# child calls SetParent to make it a child of C window. This seems to make the C# window exhibit correct MDI child behaviour but it does not paint properly - exactly as the OP describes. And yes I'm on XP. Some posters seem to have solved this but not provided the code that did it! Anybody got any ideas?