That's will be a cool project!
@Jim: it's a cool idea to use another thread to process messages, but it's not working here, the window stop responding and it can't check for WM_CLOSE or WM_KEYDOWN, tried using 'peekmessage' method and failed too...
So I did some modifications in your source and added escape key support and one example to test it.
Now we will check for winapi messages in the ptc_update function using 'peekmessage' method.
I can disable all FB warning's but I'm using Visual C++ 6.0 not sure if it will work for VCExpress, just use #define WIN32_LEAN_AND_MEAN to disable uuid.lib and compile without any default libraries (LIBCMT and OLDNAMES).
Take a look at it and tell me if all is correct, and then I'll add fullscreen support

[edited: example]