Why i am asking all this is because its always hard to switch on to something new and start from scratchwhen you are into it for more than 2 yrs
Objection. I'm into C since 1984 now, into C++ since 1991, and I have been using MFC during the last 12 years. However, in my current project I use C# and the .NET 2.0 Framework (although it's still in Beta and will only be released two weeks from now), and we're already heading towards C#/.NET 3.0 / WinFX (WPF aka "Avalon", WCF aka "Indigo" etc.). So although I'm really deeply "into" MFC and it has been my favourite framework for writing GUI code on a daily basis for many years, when starting a new GUI app today I would never look back to MFC.
In the IT world, you have to be flexible and willing to learn new technologies and paradigms every few years. You also have to understand when an era ends...
I know, these might be critical statements in a VC++ / MFC forum. Again, I'm far from saying that MFC is dead. MFC code will still be around for a very long time, the MFC library itself is being developed further, and there will always be a need for developers proficient in C++ and MFC. But your career chances will be far better if you additionally embrace new technologies instead of ignoring them. Besides that, and as said elsewhere: The entire managed / unmanaged interop story is becoming more and more important, so being an expert in both worlds is a very good idea IMO.
Please tell me one last thing gstercken. Do you accept that Win32 with MFC is the strongest kind of programming technique available and is even more powerful than .NET or anything else today?
It depends on what you mean by "strong" and "powerful". If that means "getting most work done in a highly productive way with least possible coding and risk of errors", then certainly not. If, OTOH, by "powerful" you mean the ability to write low-level code which deals directly with processor registers or implement your own memory manager, then C++ is certainly more "powerful" (although MFC won't help you much here either). Just wondering: When was the last time you actually had to do this kind of things?
Originally Posted by MrBeans
If so is it possible to combine Win32 with .NET like use an Win32 API to alter a control say in .NET.
Of course, that's what interop is all about. The most common ways to do this is to either use COM interfaces (which you can directly call from managed code) or to use C++ (which is currently the only high-level language that lets you mix managed and unmanaged code).
A few years ago, when all the world was talking about COM and ActiveX, I also adopted them (I had to, since projects at that time required it), although I have never been convinced of them. And although some of the concepts (especially the idea to use interfaces extensively) have survived and can be found in .NET today, diving so deep into that complex and clumsy technology has been a waste of time in the long run.
When the Java hype started, I luckily managed to get almost completely around it (the most important stuff I lately did with Java was porting Java apps back to C++ / MFC, because customers didn't want to see Java code any longer in their projects for various reasons).
However, C# (as a language) and .NET (both the CLR/CTS and managed code as a technology and the framework itself as a class library) feel completely different, and I predict them a great future. I'm really looking forward to reading these statements again 5-10 years from now... Let's see what the future brings!
As a little aside observation:
All successful and good (successful doesn't always mean good so "and" is mandatory) programming languages creators (e.g. Kernighan, Ritchie, and Stroustrup) had beard at the moment of creation.
The creator of C# had not.
Well, we'll see... maybe there are just statistics...