tags:

views:

299

answers:

7

I am a vc++ developer but I spend most of my time learning c++.What are all the things I should know as a vc developer.

A: 

You should learn the MFC library. In my opinion, it is a vey good lib especially for making GUI applications.

luc
IMHO .net and windows forms or wxWidgets are considerably better choices - MFC's a pain in the ***
Jon Cage
MFC is dead. If you're going to learn something, learn something new.
Eric H.
Cleary, MFC is a waste of time. If you want to do GUI in C++, you should learn QT.
anno
If you want to use Qt, don't spend money in buying Visual Studio. It has its own IDE. CodeBlocks is also a better choice for wxWindows. If you want to use Visual C++, MFC is the standard choice. It is not dead and news things are coming with VS2010.The best reason to learn MFC is that there is a huge basis of applications and developpers. I learnt it some years ago and I've never thought that it was a waste of time.
luc
@Eric: MFC is not dead. I still work daily with MFC apps. I don't think it's the best framework to start a new project with, though.
David Thornley
+5  A: 

Most importantly, the Debugger.

And if you are into MFC/ATL Development, than those libraries off course.

Other things such as how to enable exceptions while debugging, how to load debugging symbols from disk paths etc are always of great help.

Actually, it really depends on what kind of projects you work on.

You could learn .NET Interoperability if you are doing some Mixed-mode Development.
You could learn ATL + COM if you are into developing COM Components.

There are several other frameworks but as I said, it really depends on what you are doing.

Aamir
A: 

Learn about the Standard Template Library. Also look into Boost Libraries. Both of these (STL especially) should save you a lot of time and create cleaner looking code.

Brian
A: 

STL and boost, why? :) You also need to learn the Win32 API.

MFC, although still supported, is IMHO not a serious challenger when you think about C#/XAML.

I find MFC to be too old fashioned. I've worked with in the early 2000, it's got some interesting things to look at, but really, that's not the way things should be done any more.

Edouard A.
I liked Qt and in my opinion if want to spend any time with GUI library then I would certainly with Qt.
yesraaj
I agree, however in the absolute sense I'd go C#/XAML for a Windows GUI.
Edouard A.
I worked with MFC in the early `90s, and am amazed it has survived so long. OTOH, it is very easy to get a small MFC app running quickly, and the nasty bits don't get you until you're 80% through a large project and discover you have to spent the next 80% of the time rewriting parts of MFC to work around its issues.
Pete Kirkham
@Pete: Language technologies last a long time. Hence the Y2K issues, the continuing use of COBOL, and similar things.
David Thornley
A: 

I think the .net CLI framework would be an exceptionally useful framework to become familiar with if you're into developing GUI apps on the PC.

wxWidgets is another excellent framework for GUI development (actually it has a lot of other very useful bits to it as well which are worth checking out).

Jon Cage
+2  A: 

Definitely agree with learning the VC Debugger - spend as much time as you can with it - it can be your best friend.
Here's a link on vc debugger tips and tricks ( though I've not verified all contents in there )

For UI, I'd take a look at WTL. It produces considerably smaller exes than MFC which is prone to code bloat

For other UI framworks in C++ - I'd recommend Qt and wxWidgets

zebrabox
+4  A: 

I don't understand why people here post things about WinAPI, .NET, MFC and ATL.

You really must know the language. Another benefit would be the cross platform libraries. C++ is not about GUI or Win32 programming. You can write Multi-Platform application with libraries like boost, QT, wxWidgets (may be some XML parser libs).

Visual C++ is a great IDE to develop C++ application and Microsoft is trying hard to make Visual C++ more standard conform. Learning standard language without dialects (MS dialect as well) will give you an advantage of Rapid Development Environment combined with multi-platform portability. There are many abstraction libraries out there, which work equally on Windows, Linux, Unix or Mac OS. Debugger is a great app in VC++ but not the first thing to start with. Try to write unit tests for your application. They will ensure on next modifications that you did not broke other part of tested (or may be debugged:) code.

Do not try to learn MFC or ATL from scratch, try to understand STL. MFC is old, and new version are more or less wrapper around ATL. ATL is some strange lib, which tries to marry STL-idioms (and sometimes STL itself) and WinAPI. But using ATL concepts without knowing what is behind, will make you unproductive as well. Some ATL idioms are very questionable and might be replaced by some better from boost or libs alike.

The most important things to learn are the language philosophy and concepts. I suggest you to dive into the language and read some serious books:

When here you will be a very advanced C++ developer Next books will make guru out of you:

Remember one important rule: If you have a question, try to find an answer to it in ISO C++ Standard (i.e. Standard document) first. Doing so you will come along many other similar things, which will make you think about the language design.

Hope that book list helps you. Concepts from these books you will see in all well designed modern C++ frameworks.

With Kind Regards,
Ovanes

ovanes
I'd add Scott Meyers' books "Effective C++", "More Effective C++", and "Effective STL" to the first list.
David Thornley