I apologize firstly if this is a noobish question for a programmer. However, I have been working with C++ for about 3-4 years now - on and off - and decided I want to become a professional programmer.
I have learnt a lot of C++, including much of the STL, namespaces, OOP, etc. and want to move onto Windows Programming. However, as a novice programmer to you more professional or better experienced types, what would you say a programmer is required to know in C++ before moving onto the Win API.
My main goal is to become a Indie Game Programmer or Application programmer. I want to get into DirectX or OpenGL programming, but I do understand this is a task that needs to be taken one step at a time.
Well. I asked that same question a while ago on here. You don't really need to know prerequisites for winAPI, other than a bit of registering classes. I learned it within 4 months (started learning*) of when I started programming. If you have been programming 3-4 years, you are more than ready. WinAPI isn't too difficult at all, other than able to understand stuff like threads, processes, jobs, kernels, etc. But I recommend learning it. It is pretty important to know. But, then again, you could accomplish these things with something like SFML, SDL, not sure of OpenGL, but you know, I am pretty amateur myself. I would like to learn DirectX, but I would hold off until DirectX12 is released. This way, you don't have to learn all of the new libraries and stuff they will include. Anyhow, you should probably learn it.
Thank you for your reply, AceDawg45. Can you tell me where is the best place to learn the Win API. I have seen it on MSDN and some tut or youtube.com. Yet, as a Win API beginner, apart from creating a Message Box i.e. MessageBoxEx(0, "Title", "Text", Buttons) I have really done anything. I tried my hand at a blank white window which took me 10-12 attempts debugging. So, I really wonder whats the best place to start.
The best "place to start" is to use template code that your IDE writes automatically for you and then try to understand what each function does. Only then read specific tutorials and compare their code with what you already have.
Well, I never get blank windows right on the first try, but I have only found useful info in books. There is theForger's Win32 API tutorial. It is free and digital. I dont remember the site, but you would do fine googling theForgers win32 pdf. I have also learned a lot through this site. Those are some suggestions.
They start you out with directX 11, but I think you should just go ahead and dive into directX. It will help you understand more of Win32 programming. Also use MSDN a lot! I wouldn't go with openGL first if you want to develop games because you need other libraries for sound and input and stuff. With directX it all comes in one big package that is neatly wrapped together.
If your main goal is to move into game programming, there is very little WinAPI that you need to learn, if any. If you were to use OpenGL, I would recommend to use instead something like GLFW to create a window for you - that way you can focus on learning the actual graphics library. Personally, I prefer OpenGL as a cross-platform alternative to Direct3D.
As @Sean Ramey said, though, for OpenGL you only get the graphics, so instead you could use something like SDL or SFML which are multimedia libraries providing everything for you, and use them to set up a context for the OpenGL.
If you still want to do UI stuff, Qt is another option over the WinAPI, and (in my opinion) is much easier and more intuitive to use. Of course, what you choose is down to you - I'm just giving you a few more options for you to look into.