This evening I’ve been taking a quick look at C# and the .NET framework; just out of interest, you understand. I’m fairly ashamed to say so (I’m used to be one of the fairly heavy anti-MS crowd), but it’s actually really good; it’s fairly obviously inspired by Java, but with a more C++ like syntax. They’ve also had the chance to look at all the mistakes Java made and clean them up (although the omission of Generics in the first version of the language does seem pretty stupid – it’s surely going to change all the container classes in the standard library when they introduce them in Whidbey…?)
The Windows Forms libraries are also heavily based around MFC, but don’t require the hideous language contortions that MFC required of C++ (on account of of how C# was designed with all this stuff in mind). A window is a class; and to create your own window, you simply subclass System.Window.Forms.Form and create an instance of it; controls are added to windows by creating a Windows.System.Forms.Button (or whatever) object and adding it to the Controls member of the Form class. It is, at last, a decent, properly object oriented user interface toolkit.
I was so ready to hate C#, but it seems that, actually, it’s really good. Damn.