Please note that some older versions of visual studio express couldn't compile windows application unless windows sdk is installed. If that's the case with your visual studio installations, then you won't be able to do any graphics at all with requirements you listed.
Please could someone point me in the right direction for getting started with WinAPI
Sure.
The requirement is that my c++ code must be copied and pasted onto any Windows PC (with Visual Studio already installed) and then compiled/run from Visual Studio.
You know, you can simply include code of whatever library you use into your project. Because projects like libsdl use permissive licenses, you could do that. Not sure if that would break your "rules", though.
With default visual studio installation you don't get much. You definitely can create a window and draw something on it with pure winapi. Using something like SetDIBitsToDevice you could easily do full software rendering yourself.
Advanced OpenGL features require wrapper library (like GLEW), but you can initialize extensions and advanced features yourself. Quake3 engine did that, so you could do that to.
Using DirectX most likely is out of question, because it normally requires installation of SDK. You could copy/paste required libraries/headers into subdirectory of your project, but then again, it is unclear if this would break the "rules".
Are the OpenGL 2.0 or similar libraries bundled with Visual Studio?
Default OpenGL header supports version 1.1 or something like that. However, you can load missing functions yourself using wglGetProcAddress
. You can also declare missing constants yourself in your code. Whether it is worth it or not, is another story.
Bottom line:
If you want full software rendering, create window using winapi, allocate 2d buffer for a "screen" (RGB format) and blit it onto window every frame using SetDIBitsToDevice or StretchDIBitsToDevice. That'll work and compile pretty much anywhere, if windows headers are available.
You could also try using GDI routines for drawing lines, etc, but I'm not sure how well that would work for a game. I haven't used GDI in quite a while, but I think you can get noticeable flickering if you aren't careful.
If you need advanced features (for example, for some people it'll be difficult to write software rendering routines that can draw textured triangles or can rotate 2d sprites) consider using OpenGL and loading missing functions using wglGetProcAddress. However, if your university (for some reason) has ancient(or faulty) hardware, you might want to limit yourself to an old version of OpenGL (OpenGL 1.1). The reason is that OpenGL 1.1 is supported by software OpenGL renderer which will be enabled in case there's some kind of trouble using hardware acceleration.