Aye, I'm largely the same; most of what I know comes from books, API documentation, and my own experiments. Yeah, you'll need a graphics library for that! Something that'll give an API for drawing stuff. I haven't used DirectX or OpenGL, but I can recommend SDL for starting out; Simple DirectMedia Layer. It's probably quite old now, but there's plenty of quite good tutorial material for it on the web. Aww, don't let it put you off! It took me quite a while to really “get” C/C++, and I can pick up languages pretty quickly. One thing I've noticed books and such on the subject often miss is the difference between C/C++ and other languages, such as Java, C#, Python, e.t.c.. Many languages come with a supporting platform of some sort; with Java it's the extensive Java API and the Java Virtual Machine runtime; with C# it's the extensive .NET API and Common Language Runtime… But with C/C++, there's essentially no supporting platform, no well-defined runtime. It's almost entirely up to the programmer to link in with supporting APIs, and build the program for each environment in which it should run (Windows 7 / XP / Linux Ubuntu, 32-bit/64-bit, e.t.c.), the sorts of things that a runtime usually takes care of. I suppose you could say C/C++ is a bit like SQL — just a language specification. Also, with SQL, each database engine provides its own implementation of the language; with C/C++, each operating system provides its own implementation (by my understanding, at least). It'll be hard, but hopefully very interesting! You'll get to see some of the technicalities that Java's been hiding from you. Also, Telnac, question for you! It's something that I've always wondered about, regarding graphics libraries and how they fit into Windows… By my understanding, Windows exposes access to the video hardware to user-mode via GDI, GDI being implemented in kernel-mode. But I've also heard GDI being described as “old” and “inefficient”, and DirectX almost being described as a “replacement”. Yet by my understanding, DirectX is simply another user-mode graphics API, alongside the likes of OpenGL and SDL, all of which would have to call into the kernel-mode GDI API to access the video hardware. Do you know if there's something I'm missing? Is there another kernel API besides GDI hidden away somewhere, which provides access to the video hardware? Or is perhaps the term GDI ambiguous, referring to one of two different things, a kernel-mode API and a user-mode API, with graphics libraries like DirectX simply replacing user-mode GDI? It's something I've been wondering for almost as long as what the “//” at the start of the scheme-specific-part of URLs denoted, another great mystery that was finally uncovered not so long ago.