So I'd say im now at the point of almost ready to be considered an advanced-beginner(lol) in C and C++ programming. While I could still use some practice in both, I'd say I have a decent understanding of most of the important data structures and so forth in both languages. Now, I'd like to start easing my way into programming simple games and other applications. I also wouldn't mind knowing how to make simple cheat programs for single-player games(ie: wallhacks and other cool stuff, It would be used for nothing malicious, only in single player games, just my personal education. I'm not sure if I'm comparing apples and oranges, but what would you guys suggest I start trying to learn if I wanna make these simple 2d games and other programs. I've read many suggests here about getting into Direct x, but then on other forums I hear opengl is the way to go. So I wanna hear some more input, What are the differences between the two? Are they similar to programming languages where it really doesnt matter which one you choose, just a matter of personal preference? What are the advantages and disadvantages to both?
I also am somewhat confused about the portability of writing dx or opengl on unix machines and then using the program on a windows machine. I greatly prefer to do all my programming using a unix machine, but I plan to pretty much always use any program I create on my windows machine. Am I just better off just dealing with doing all my programming on Windows, simply for portability reasons? if anyone could clear it up or give me a place to read up about it Id appreciate it. Lastly, I'd like to eventually read into making GUI's, what does everyone here prefer(WinAPI the way to go?).
PHEW, thats alot of questions I know, but im a curious dude

. So if any one of the questions catches your eye and you feel like answering, please do, I'd appreciate your input. Thanks.