Most of my GUI experience under Windows has been through work, where we've always used MFC (Microsoft Foundation Class) in Visual C++/Visual Studio. The problems with that for learning are multiple:

1. Microsoft has been or has been wanting to move away from MFC towards Window Forms, which uses its new .NET framework. .NET does have its advantages, however one major disadvantage I've encountered is that its datatypes don't all coincide with C++'s. One major difference is C++'s string class vs .NET's String class, which requires constant converting when moving strings between the forms and the C++ code. I finally gave up and started learning C# for working with Windows Forms; I was having to completely relearn C++ anyway, so why not just learn a new language?

2. There are very good highly functional express editions of Visual Studio that you can download and install for free. The obvious motivation for Microsoft is to allow students and hobbyists to learn on and work with their product. Of course, some limited functionality has been disabled in the express editions. In particular, the Visual C++ Express Edition does not support MFC. So for you to start learning MFC, you would need to buy the regular Visual Studio. Just starting out in order to learn GUI design, you'd be more likely to want to start out with free.

3. Various programmers have developed gripes about MFC. I'm not sure what they are.


In short, my experience is where you would most likely not want to start out. However, what these various frameworks do is to perform a lot of the lower-level operations in Windows programming. To learn what happens under the hood (or bonnet, the part of the car that covers the engine), pick up a copy of Charles Petzold's "Programming Windows" book (he had one for practically each version of Windows; actually, the same book updated for the new Windows version). His approach from the beginning was to do it all in straight C (though I hear that he switched to C++ later), no special libraries or frameworks, just the standard SDK (Software Development Kit). It's harder going than using a framework, but you get to learn how a Windows program actually works and what the frameworks are doing for you. If nothing else, pick up his book as a reference for more information of concepts that your framework tutorials seem fuzzy on.



Keywords: GUI, Windows,MFC,SDK,Programming Windows,C++,Visual Studio