.NET is trying to do a few things.

Make it so that the language doesn't matter.

It's all the same to the ".NET virtual machine" if you using VB.NET, C#, C++, or any of the other dark horse programming langs. There's no more, at least in theory, reason to use VB for one set of tasks and VC++ for another. Each language can get to the same widgets and wreck the same havoc.

Bring the good in VB together with the good in VC++

In case you hadn't noticed, the good in VB is the ease with which you can create an application, specifically a form. It takes literally seconds to create fully featured GUI'd applications in VB, and the event model is horribly easy to understand and possibly even too straightforward.

I haven't used VC++ enough to really know, but when I tried it out in Visual Studio 6 it wasn't as easy to make a form with event handling. And I know Swing (Java's preferred GUI toolset) isn't nearly so straightforward and has a much steeper learning curve (depending on your axes).

What you get with VS.NET, whether you're using C# (my current preference) or VB.NET, is VB 6's forms combined with the same toolsets (namespaces) MS is planning for any one to need. And what I get with .NET, coming from a Java perspective, is a lang close enough to Java to be mistaken [by those not real familiar] for its twin with a windowing toolkit that actually makes sense.

Bottom line -- With VB 6, you're somewhat limited by the VB runtime and with VC++ 6 you're somewhat limited by a more complex event model (or else you'd've prototyped in VC++, not VB). With VS.NET, you've got the best of both.

There was a third thing, but I lost it on the way back from the water cooler. ;^) And now that I think about it, the second point is really just a refining of the "how" that they used in the first point, but I think that's kinda what a blog's all about. Crappy writing, and nobody cares.