The Microsoft Foundation Classes are fairly useful. I don’t have experience with any other framework for comparison but MFC it better than writing all of the message handling code by hand.
The problem with MFC is that they give you plenty of rope to hang yourself. I’m adding a docked “pane” thing to my window that I want to show up and be a fixed size and have controls in it that are fixed in size. I want that “pane” to indicate to the user that the game is in a different mode. Easy? Yes. It’s easy to add the pane. I had to create a different project with a properties pane as part of the project. Then I had to find the parent to that docking pane thing and use that instead. Then I needed to figure out again that the latest classes load their window state from the registry because who would want the program itself to control that? It was a few hours work to get past the initial unusable properties pane to a point where I had control over some things in an empty pane. Another hour after that, I was able to use a dialog box as a child window in it.
So what’s next? I need to get the button and other control notifications into the view window. What a pain-in-the-ass.
I won’t provide samples of the code for any of this because others should have the fun of using Google and piecing together the information they need. Plus, if you don’t step through the MFC code in a debugger, you won’t know why your actually frustrated with the lack of generality of these classes.