Good point about the short being promoted to an int and I've already changed all my casts to C++ style
The reason I mention it is that because displayX is an int, a short will automatically be promoted to an int, even if you left out the (int) cast. This would work just fine.
Also, since you're "taking C++ over C every chance [you] get", you could use a static_cast instead of a C-style cast there.
I moved alot of code around and I need to go back and check for things like that. I didn't intend to assume it was already included.
Since Window.h uses HWND and HINSTANCE and other types from <windows.h>, I'd include windows.h in there. It's not a good idea to assume that whatever function is using a header file will have included some other header file beforehand.
I blame MSDN again. In the remarks, it says what the return value should be if the messsage is handled properly. Most say to return 0 but that one said to return true.
Also, in CWindow::WindowProc(), you're returning both 0 and true as if they were LRESULTs. I'd stick with true and false or 1 and 0, but that's just me.
I'm trying to destroy things in a certain order so I need extra control. I can't assume that the classes will go out of scope at the right times.
You could also perhaps make CGraphics::Destroy() into the CGraphics destructor
I defined APPSTATES it in multiple headers so a cpp file could have picked it up from another header file and doesn't need it from the header file it is currently looking at. At least that was my logic. I assume that at least some of my logic or at least methods are wrong.
Unless you want to be able to include only part of the header file, but I don't see why you'd want to do that
I still haven't decided what to use. Do you recommend QueryPerformanceCounter() over the other options?
QueryPerformanceCounter() is a Windows-specific function, it's true, but that code includes a lot of other Windows-specific code with no concern for portablility, so there's probably nothing wrong with using it.
Thanks again for your advice