I'm using Visual C++ 2008 Express Edition. The WIN32 preprocessor directive doesn't appear to be defined by default, so when I surround includes with #ifndef WIN32, it still includes them.
I found someone with the exact same problem below, but it was so long ago that the location of this setting has changed:
http://www.gamedev.net/community/forums/topic.asp?topic_id=418604