4 windows, 4 contexts, 4 sets of textures...
you need to use wglMakeCurrent to select which gl context you are using every time you start rendering to a different context upon the same thread.
Be warned that wglGetProcAddress must be called separately for each context. Function pointers returned by wglMakeCurrent are private to the context from which they were obtained, and crashes can legitimately occur if you call a function from a context which is not current. Of course, most drivers will use the same pointer for every context, and most machines will only have one driver, so it might be hard to test this.
Regarding textures, use wglShareLists to share lists+textures+etc between multiple contexts, then you don't need 4 separate sets of textures. Make sure you call it before creating any such objects.
so stick a wglMakeCurrent call at the top of your Render functions. Also, why oh why oh why do you have two separate copies of the same function? Use a context index or something, so much cleaner and less copypasta.