Try to realize a complex game!
If you have been programming in C++ for a while and know the basics (What is a pointer? What is a function? What does the operator 'new' do? What is a class?) it is a good idea to start windows programming by realising a card game like blackjack or so. There should be a menubar, and the user interface should look professional.
This is no joke. You can do this as soon as you know what messages are. As there are thousands of API functions, structures and so on, nobody can know them all. It doesn't cost you anything if you look up every single command at the beginning, and maybe you will need a week or so to program blackjack this way. The more programs you write, the less you will need to look up in your help. (I bet after a week you will use SendMessage, CreateWindowEx, DialogBox etc. as if they were the easiest functions on the world - provided you were diligent.)
Many 'books for API-beginners' let you think you are a good API programmer when you write this famous HelloWorld-nonsense, but as you can see yourself this is not true. Some other books deal with the MFC, authors most often braging with Winsock and ActiveX, though many of these books' titles include something like 'VC++ for beginners' of 'MFC in 20 days', their only purpose seems to be to confuse 'beginners'.
Oh - it is essential for your very first 'complex program' to dispose the entire task into many small modules - but sure you knew that.
Good luck