I am self learned programmer and web developer, and let me tell you something, many times you'll be be left frustrated and mad and hopeless as it has happened to me. Anyway you must be wondering where you should start, as you say you want to code some graphical user interfaced Programs for windows platform, I will suggest you to learn JAVA or C#(C# is not cross platform unlike JAVA).
Here's what I did, I started with C++, it felt like a huge mistake because once you start coding with console there's console all the way as the language doesn't have built in forms programming support like C# or built in GUI kit like JAVA has. Indeed, c++ allows you to work with graphics but without any third party library like QT or ALLEGRO you'll have to write hundreds and hundreds of line of code in OPENGL and stil barely able to accomplish something.
Java is relatively easy. But you will not really understand the in-depth working of memory allocations and hardware with JAVA. But with C++, you'll have to be really really patient. Trust me, I have wasted so much time switching between languages all because I chose C++ and wanted to create something in GUI. Even after hundreds of hours of learning, I couldn't(it was my first language), so I switched to JAVA and some web languages. With JAVA GUI was so easy that I was offended, I'll be honest here, it offended me that I had given so much time to C++ and then there are these JAVA programmers for whom it was so bloody easy. Anyway, I started feeling guilty and sad by the fact that I learned it for so long only to give up in the end, and here I am, 3 years from that day, a web developer(I concentrated on PHP/SQL/JAVASCRIPT from there on) who has worked with the android platform with JAVA and lord knows tried a lot many languages in my way. Now I am back to c++, and will be studying the BOOST libaries. You know why? Because GUI is not the aim of C++. Trust me, you'll find more jobs for android and web and far more for C++ but here's a little secret. Those Java or web jobs would be boring, mostly transferring data from database and building softwares/programs for these economic morons but c++/C projects? They'll be like writing a kernel, or drivers for an operating system, or something related to robotics with embedded assembly, or some video games(do not take this for granted, video games are near impossiblie to make on your own).
Anyway, don't be disappointed, it will be hard but it wtill be worth it. I don't really have any achievement here even after 3 years, but you should know the fact that I didn't study programming for 3 years, procrastinated a lot of time and spent so many horus and days with gaming. You can write me, I would love to discuss this with you or help you if you are stuck with anything ( One thing that bugged me all the time were the communities where I went seeking help. Most people are so arrogant and rude that they are like inb4 noob ill r8t ya m8 dn8 ask stupid questions). Ps, I'm a highschool student who is still struggling with his highschool. Goodluck
