Why Beginners Shouldn't use MFC
Its my view that MFC is the best library
for professional developers. Its comprehensive, well documented, and
officially supported by Microsoft. WTL is also a very impressive body of
work. Its a good alternative to MFC for the experienced programmer who wants
to work more closely with the Windows API. Even so, I doubt that either of
these platforms are an ideal choice for novice C++ programmers.
Whether we're a novice programmer or an experienced one, I believe its
important that we understand each line of our source code. This applies both
to the code we write by hand, and any code written for us by wizards. For
me, the thing which separates computer programming apart from many other
disciplines is that its a precise science. A well written program is one
that (among other things) behaves precisely as the programmer intended.
The problem for beginners with libraries like WTL and MFC is that they are likely to end up with source files that includes lines of code that they don't actually understand. The convenience of wizards in MFC can actually make this problem worse. Novice coders are perhaps encouraged to think that they don't need to understand all the lines of code in their source, since a wizard will do the work for them. When this happens, programming becomes less of a precise science, and more of a black art. Worst of all, the failure to understand their own code is rather likely to hold the novice programmer back, and cause them to gloss over fundamental concepts, like message maps.
In my case, after using MFC for a while I realized that I didn't thoroughly understand the code I was writing. I wasn't happy with that so went back to working with the windows API directly. This library was the result. I imagine that others who teach themselves to program for windows using C++ would also face similar challenges, and I hope they find the library I developed useful.