hi guys i read a lot about mfc that it is messy and i should not learn to work in mfc that qt is better. can you give me som ideas. i already started to work in mfc but please tell me that mfc is not that bed, because i already bought a bunch of books where I study mfc. i wanted to start work on some windows aplication. i moved on from console aplication.
MFC is a fat library, but I wouldn't call it messy. It is Microsoft's C++ framework, I think it's available with the paid versions of Visual Studio. So it's not portable off that compiler as far as I can tell.
Qt is a cross platform GUI. so if you wanted to write a portable GUI app (like Perforce Client for example), Qt would be a good choice.
MFC is mostly outdated now. I won't comment about the issues it has.
Only old/legacy projects are written in MFC and most (if not all) of them are porting them to .Net/C#. New code bases mostly use .Net/C#.
I would recommend using Qt which is much powerful and which has much better design and you would learn new techniques/architectural skills.
In case you want to stay only on windows, C# is a good start.
There is nothing wrong with working with MFC in Windows. I'd also like to mention that even if C\C++ is just a hobby for you (like it is for me) you'll likely end up learning both QT and MFC. The only question is which one do you learn first.
thank you guys it was very helpful what you said... i started with MFC so i finish it and then probably start with qt . i thought that it would be bad idea to learn both of them but as i see now i ll probably get to both of them. it is hobby for me now but i am studying it too so it will be my profession after a while too.. and i probably go to .Net/C# too.. one more question is it easier to learn c# or qt if i am already done with MFC or it will be something totaly new for me and i will have a lot of and same problems as i had with c++
C# has the "advantage" of being what is called a managed language. The plus side to that is that it takes things like resource management out of your hands, the disadvantage here is that it takes things like resource management out of your hands. C# also depends on a framework to run, the same way Flash, Unity and Java do so code that you write may be restricted to specific versions of the framework through no fault of your own.
Personally I don't like C#. It feels like someone learned some Java and some C++ then set out to create their own language. It also restricts you to using MSVC which is not my favorite IDE.
Those who want to learn MFC, I always 'strongly' suggest them to first start with win32 api's and write a couple of decent programs.
People who start with MFC have no idea how things works. They don't even know what is a message loop or how events works. What is a window proc function etc etc.... This is like using a std::string when one doesn't know how pointers work.
For some of you this would look funny but this is actually a reality.
Wow! Now this poor guy's gotta learn MFC, then Qt or wxWidgets, then .NET, and, as if that's not enough, Win32, so he/she understands what's going on 'under the hood'! I guess that's why we make the big bucks!
Oh, and about that either/or situation with Qt/wxWidgets - just learn 'em both! :)
Wow! Now this poor guy's gotta learn MFC, then Qt or ...
From what I read here it seems like a certain order appears.
First playground: Windows (--> MFC)
Then, explore the world: (--> Qt)
Then you start getting lazy (--> .net with C#) (I use .net for quick and dirty GUI tools)
Then maybe you get bored with Qt (--> wxWidgets)
And finally you want to know what's really going on (--> Win32)
Then you come back to MFC and realize that you can do real magic with MFC using your new Win32 knowledge.
Usually, I would suggest the order Win32 -> MFC, too. But it's mean to tell a beginner to learn something quite complicated first just to know what's going on underneath and THEN start to learn the current technology to write "real" programs.
It's hard to give good advice on that subject. And, as always: ten people will have twelve different opinions.