If you're willing to do work, then learn Java or C first. I personally don't like C++, but that's another story.
I learned Java at school, and at work, so I don't know what to recommend in terms of books. I have my textbook, but it isn't good or bad. Mythix just purchased a couple Java books, I'll point him this way, maybe he'd know more than me.