Also you can learn from those programs you cannot currently understand. Look carefully at them, dry run them in your head, take samples of the code and build them into a small program so you can step through it with a debugger. Also start writing programs of your own, or at least attempting to. You can learn a lot that way. You _cannot_ learn advanced programming just by reading a book; this is only something you can pick up by doing it.
And get off 16-bit Windows. Use 32-bit and get a modern compiler with a good debugger. Use gcc and gdb if you don't want to use the Microsoft tools.