Well, there are obviously books about the subject, one in particular sharing the same title as your post. But, think of what a program is. It is functions and variables (or at least in a procedural language) being constantly manipulated and defined. A game will take data such as geometry and UV coordinates, audio data, input, network packets, miscellaneous files, and a TON of other things and combine them into your familiar game in a few milliseconds. Figure out how to do that and you are set to go (that was sarcastic, I'm not an idiot).
EDIT: Also, don't go with C++ and DX. That is definitely pushing it for a person who is doing it alone, not getting help with it, and has no experience. Try C and OpenGL, as there is a shallower learning curve and also less required brain power (I am NOT calling you stupid, by the way, but C++ and especially DX will give you migraines and internal neuro-bleeding)
You're obviously biased.
There are enough programmers who prefer DirectX over OpenGL, and the latest iterations of DX (being 10 and 11) have a very clean and straightforward API with a robust set of features.
Please try to keep the information you provide objective, nobody will benefit from horribly biased posts.