The recently released Visual Studio 2010 SP1 Beta brings many enhancements and bug fixes found since the product’s launch, most of them in the managed world. However, there are new enhancements to the good(?) old MFC, namely wrapping of some of the Direct2D interfaces.
Direct2D is a new layer in the DirectX world, sitting on top of Direct3D, providing high performance and flexible 2D graphics. It was introduced with Windows 7 and Windows 2008 R2, but it’s also possible to install it on Windows Vista. What’s wrong with Direct3D? Nothing, but doing 2D graphics is difficult using the Direct3D API alone. The old DirectDraw interfaces are good at blitting images (“sprites”) but no nothing about 2D shapes, such as ellipses, or interesting brushes, such as a linear gradient brush. This is what Direct2D is for (and image blitting as well).
MFC has been around for about 20 years and still around with us today. It’s been criticized as being bloated and poorly designed, especially in today’s standards and the existence of something like WPF hasn’t helped either. However, it’s the only real C++ UI alternative from Microsoft at the moment (although some enthusiastic people use WTL for their UI). Hopefully, Microsoft will come up with a new unmanaged library for doing UI and UX, with power and flexibility rivaling WPF, but until then, we have MFC.
The new Direct2D MFC classes integrate with the rest of the MFC framework, making it easy to integrate into existing applications.
Another new face in MFC is the wrapping the Windows Animation Manager (also introduced in Windows 7) that allows high level animations, somewhat similar to the declarative approach used in WPF and Silverlight.
It’s good to know improvements and enhancements in the Visual Studio ecosystem are present in the native programming world as well as the managed.