Its really saddening that MFC 4, the basis for the current version, was designed at a time in which C++ itself was in a state of flux. As a result its design isn't as good and, more importantly, as intuitive and easy to grasp as it could have been. I have a hunch, based on my observation of fellow students in undergraduate computer science, that many of todays VB/Java/.NET programmers had an early fling with MFC, found it too complicated because it requires you to know your way around the base classes if you want to do any substantial modifications, and switched over. Combine this with the false allegations bandied around on C++ itself being exceedingly complex and you end up with a language that is scorned for just not the right reasons. When I first started on Java, I was told it is easy to use and doesn't let you shoot yourself in the foot and that it is really and truly 'Object Oriented' from the grounds up. Well when I actually used it I found it lacked the expressiveness that is afforded by C++ what with lack of pointers and no operator overloading and no templates either. And the Swing architecture and the scoping rules for inner classes and unnamed event handlers are quite cumbersome to deal with. It surprises me then, that so many programmers would flock to the fold of 'managed code', scared of dangling pointers and not freeing up memory when in modern C++ these are non-issues if you follow standard programming practices. And as it has matured, they have had to add templates and stuff to Java also. The only issue that remains is security. Managed code can limit what APIs are called by programs but such checks could also be placed in unmanaged APIs.
Anyways, what has got me concerned is that developing core operating system components in C# is going to REQUIRE C++ programmers to do managed code. And that would mean patronizing the mutilitated version of C++ Microsoft is pushing as a 'standard' for CLI.
Also, currently I do not understand to what degree it will affect our ability to use standard C++ and design our programs around it. Would the new API force us to desing our programs around the restricted version? Would you programmers out there accept that?
Also, I would like to hear what others think could be done to improve VC++.