Some excellent books have been recommended so far; to that list I'd like to add two things.
First, hang out with experienced coders and learn from them. This is easiest done online, where words speak louder than actions; I learned much of what I know at the feet of the masters at GameDev.net, a community I highly recommend. (The ones who know what they're talking about can seem rather elitist at times, so try not to be offended if your questions get anwered in a condescending way. You can recognize these people by their correct spelling, grammar and usage.)
Second, learn by imitation. Look at code that someone else, and find a way of modifying it to do what you want to do or reimplementing its design in your own code.
As you learn C++, wxWidgets will provide with an excellent example of how it's properly used. When you're ready to graduate from command prompts to interactive windows, I'd definitely recommend skipping Win32, MFC and .NET/CLI, and moving straight into wxWidgets. (Make sure you know the workings of the compilation process, e.g. library includes vs. libraries vs. DLLs, compile time vs. link time, search paths, before you try your first program that relies on an API such as wxWidgets.)
Cheers, good luck, and all that,
John E. / Twilight Dragon Media