You should be aware that Visual Basic bears as much of a resemblance to QBasic as a quicksand pit does to a mud puddle. Both are basically dirt and water, but the quicksand pit is a lot bigger, and looks and behaves very differently from the mud puddle.
<FLAME intensity="thermonuclear">
VB also resembles the quicksand pit in that it looks safe and simple until you step on top of it, at which point you get sucked into a quagmire.
</flame>
Sorry, In needed to exorcise a few personal demons there. I've been struggling with VBA for Access again lately, and I am about ready to throw a fit over it.
As far as C++ goes, while it is certainly possible to learn it as a first language, I don't particularly recommend it. It is a rather big and hairy language (though not as complex as Ada, or Visual Basic) and it is easy to get overwhelmed by it. If anything, it makes more sense to try and understand basic C first, though the two languages use very different approaches in many areas.
I am going to make two recommendations, both of which are going to be controversial in the extreme. I suggest that, if you haven't delved too deeply into C++ yet, that you set it aside and take a look at two other languages first - or rather, two specific books, each in a different language. I am suggesting them because they are, IMAO, the best books to learn how to program from as a novice. I advise reading both of them, one after the other, but which one you should try first will depend on your own preferences.
The first of them, the one I personally would read first, is
How to Design Programs, a book which covers programming in general using Scheme as it's main language. The main advantage of this book is that it talks of programming as a discipline, and as a general skill, rather than as just writing code in a specific language. Indeed, the main advantage of Scheme is that there is almost no language to teach, a dramatically different situation from that in C++. It walks through the ideas of program writing in the simplest possible manner, such that virtually anyone could understand it. The excercises build up from the very basic building blocks and eventually take you to some of the most complex areas of program design. Best of all, the book is entirely on line, and the development environment it uses (the excellent and elegant
Dr Scheme) is free.
As I said, I knew this would be controversial; Scheme is a language that doesn't get used much outside of colleges, and it is disliked by many. A lot of people will say that reading this book as a waste of time. I disagree, obviously, because I feel that it is more useful to understand to broader concepts first, and then apply them to the specific language you are using, rather than to learn a language and then try to figure out the general principles from there.
The second book is in many ways the diametric opposite of the first, and thus makes an excellent companion:
Assembly Language Step by Step, 2nd edition, by Jeff Duntemann. I have lavished enough praise on this book elsewhere that to go on further would be redundant; leave it to say that while the book is not free, it is certainly worth the price you would pay for it.
Many, on seeing me suggest x86 assembly language as a beginnner's language, will probably question my sanity. Were this book not so excellent, I would have agreed; however, Duntemann's writing is top-notch (as science fiction author, he's been twice nominated for a Hugo) and he brings a new clarity to the entire subject, and as such it truly is a suitable presentation for first-time programmers - and will provide insights into later programming work, as well.
Take this advice as you might any other: with a grain of salt. I am far from an authority on learning how to program, and my opinions are, well, a bit on the cranky side to say the least. If it helps you, fine; if not, then it isn't anything to get hung up about. In the end, you have to find the way that works best for yourself.