Ow, that's tough... I'll tell you my point of view, which is not neccesarily right and some might disagree with certain points.
Ok, so there are Visual Studio 6.0 - which I own - and there is VS.NET. Fine, maybe I should upgrade. Should I ?
Ok, now we're getting to the most important question at this moment: to .NET or not to .NET. If you are not going to use the .NET framework, there's no reason why to upgrade to VS.NET. Although there are some improvements to C++ and the MFC library, they are not significant enough to be worth buying VS.NET.
On the other hand, if you want to develop using .NET, you definitely should upgrade. There are 3rd party open source solutions for .NET (SharpDevelop), but VS.NET is soooo much better.
Now, what *is* the .NET framework everyone's talking about these days? .NET is Microsoft's ideao of the next generation development platform for the next decade (at least they say so now :-). It's basically a huge (and I mean *huge*) library of various functions, file IO, windows UI development, web development, XML, registry functions, cryptography, databse access... you name it. It's meant to be a way of wrapping all the diverse Windows' API's developed in years, all packed in one consistent object oriented library. Plus, like I said in another thread, it's meant to be a cross platform solution. The compiled .NET programs are platform independent, they are just interpreted by a certain platform's runtime.
.NET platform also provides several programming languages to use the library from, namely C#, Visual Basic.NET, JScript.NET and others. Now there are other 3rd party languages available for .NET, such as Delphi.
All those language use the features of the underlying .NET platform and use its types and features.
In short, .NET is not just about web develpment or XML, it's a fully featured depelopment environment. DirectX 9 also provides direct support for .NET applications.
As you can see, I used a lot of space to decribe the platform, because I really think it's well constructed and easy to use; in fact, I'm working on a .NET interface layer for the WME engine core and I intend to use C# to develop the new WME tools.
Next problem: there are too many possibilities to choose to create applications. There is the Win32 API, there is MFC, there is DirectX and different Wrapper Classes, where I can't judge if they are good. Ok, the easiest way seems to be to create some MFC project, but I don't understand what the wizard creates and how I could change it. I guess I don't like MFC at all.
It really depends on which applications you are going to write. MFC is useful mainly for GUI apps, because the native Win32 GUI functions are quite cumbersome and MFC simplifies the tasks. Of course, MFC also provides some supporting classes, for example for easy string handling, for dynamic arrays etc.
DirectX is a standalone library for multimedia applications, it has nothing to do with MFC.
As an example: the WME runtime is written in C++, it directly uses only a few Win32 functions, and DirectX. It also uses the STL (standard template library) which is also a set of several supporting types (again, strings, dynamic arrays etc.).
The WME tools use MFC for GUI, plus they link the engine core (which is MFC independent).
Among MFC there are some other GUI libraries out there. There was the OWL library by Borland, very similar to MFC, but it's dead now, since Borland switched to the Delphi/C++Builder type interfaces.
I believe AGS uses wxWindows, which is supposed to be multiplatform, but I don't know much about it.
I want to learn C++ ! It seems to be the base of everything and the most advanced language next to Java (uggh!!) which is not too platform dependent. 99% of all tutorials just suck, they introduce thousands of new keywords and don't explain them. I'm searching for the 1% !
Yes, most of the "modern" languages are based on C++. It's really easy to switch to C# if you know C++ (personal experience :-) Unfortunately, I won't point you to any good tutorials, because I learned from books (and I won't point you to the books, because those were locally published ones).
I want to create Windows applications
Ok, I'm definitely voting for .NET and C# on this one. Win32 is almost unusable for larger apps and MFC is now considered obsolete. But if you'd really want to use MFC, I can recommend the "Inside Visual C++" book by David J. Kruglinski.
I want to create resizable GUIs (hehe, I just write this down because these things were so easy on the Amiga, but my first tests with VC and VB didn't work this way at all!)
I don't know what you mean by resizable GUIs
I want to be able to use DirectX some day (I managed that already with some tutorial, but I don't REALLY understand it!)
Just a few hints:
-forget about DirectDraw, it's obsolete. Direct3D in DX8+ is much easier to use anyway.
-DirectMusic is a mess ;-)))
-read the DirectX documentation (at least the relevant parts), THEN the tutorials :-)
Ok, I probably forgot to mention about thousand things I wanted to. Let's go on :-)