Re: Semi-newbie question on Visual C++ vs. Visual C#
"MrAsm" <mrasm@usa.com> wrote in message
news:srhus25ek8a4e550943klrh4moqg6umu5b@4ax.com...
To me, C# RAD seems more like to Visual Basic 6 RAD.
For example, to change the background color of a control, in C# you
simply set it into property sheet, while in MFC you should at least
have to use a custom derived class (e.g. CColorEdit, CColorStatic,
some can be found on CodeProject), then have to call proper method in
OnInitDialog(), etc.
Yes, no doubt, .NET WinForms are much higher level than MFC. It's the
difference between MFC adding a syntactic sugar layer on top of raw Windows
vs. doing away with raw Windows completely. If that's all you've done, it's
easy to appreciate the syntactic sugar, but once you've experienced the
complete abstraction of Windows constructs (never having to know what is a
message pump, etc.) you wonder why you did that all these years.
In addition, the advances in the IDE have all been for WinForms. The
WinForms layout editor offers superior alignment during the dropping of a
new control, for example. The properties exposed by controls are much
better advertised in the Properties editor.
I'm just starting WinForms and appreciating it more and more. Still, I
think they made it too much like VB. I put a tab control into my WinForm
and am amazed that all the controls for EVERY tab are put into the same
WinForm! This is unheard of in MFC, where each control instance is placed
into each CPropertyPage derived class. In essence, RAD makes it fast to
prototype by making the form a big global variable, which seems to be hard
to maintain as the program grows.
Also, if there is ever a limitation or bug in .NET, the fact that it is so
far removed from straight Win32 would, I believe, make it harder to figure
out and fix.
But if you have not a mentor, MFC is IMHO much harder than C#.
It's definitely true, it's easy to scratch your head about how to do
something in MFC. But that's what Google is for. MFC and the raw Win32 API
is so well documented, if you choose your search terms wisely, you will soon
have the answer. But as .NET becomes more and more in use, the same applies
to that too.
Also, consider that MFC books (including the great book by Jeff
Prosise) are focused on Visual C++ 6 IDE and wizards. The Visual
Studio 2003/2005 IDE is very different from VC6 one, and - even if
that is not a big problem for a programmer who already knows MFC - I
think it is a problem for one who is learning MFC for the first time,
and has only VC6 related tutorials and books.
To learn MFC using VC2005, I highly recommend "Ivor Horton's Beginning
Visual C++ 2005" (Wrox). It covers the VC2005 IDE and is a great intro to
MFC. Further, there are C++/CLI chapters that make it a great intro to
C++/CLI. This allows you to compare and contrast MFC with .NET.
-- David (MVP)